VB.NET Winform 中DATAGRID控件中添加COMBOXBOX控件

 

创建示例

1. 按照如下步骤创建一个新的 Visual Basic Windows 应用程序项目:
a. 启动 Microsoft Visual Studio .NET。
b. 文件菜单上,指向新建,然后单击项目
c. 新建项目对话框中,单击对象类型下的 Visual Basic 项目,然后单击模板下的 Windows 应用程序。默认情况下将添加 Form1。
2. 将一个 DataGrid 控件从工具箱到拖到 Form1。
3. 将下面的代码添加到代码窗口顶部的 Form1.vb 的“声明”部分中:
Imports System.Data.SqlClient
Imports System.Windows.Forms
4. 将下面的代码添加到代码窗口的“Windows 窗体设计器生成代码”部分之后:
Public  MyCombo  As   New  ComboBox()
    
Dim  con  As   New  SqlConnection( " server=myservername;uid=myid;pwd=mypassword;database=northwind " )
    
Dim  daEmp  As   New  SqlDataAdapter( " Select * From Employees " , con)

    
Public  ds  As   New  DataSet()
    
Private   Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
AddHandler MyCombo.TextChanged, AddressOf Ctrls_TextChanged
        
'Fill ComboBox list.
        MyCombo.Name = "MyCombo"
        MyCombo.Visible 
= False
        MyCombo.Items.Clear()
        MyCombo.Items.Add(
"Sales Representative")
        MyCombo.Items.Add(
"Inside Sales Coordinator")
        MyCombo.Items.Add(
"Vice President, Sales")
        MyCombo.Items.Add(
"Sales Manager")
        MyCombo.Items.Add(
"Flunky")

       
        daEmp.Fill(ds, 
"Employees")

        
'Set the RowHeight of the DataGrid to the height of the ComboBox.
        DataGrid1.PreferredRowHeight = MyCombo.Height
        
        DataGrid1.DataSource 
= ds

        DataGrid1.DataMember 
= "Employees"
        
'Add ComboBox to the Control collection of the DataGrid.
        DataGrid1.Controls.Add(MyCombo)
    
End Sub


    
Private   Sub DataGrid1_Paint(ByVal sender As ObjectByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGrid1.Paint
        
If DataGrid1.CurrentCell.ColumnNumber = 3 Then
            MyCombo.Width 
= DataGrid1.GetCurrentCellBounds.Width
        
End If
    
End Sub


    
Private   Sub Ctrls_TextChanged(ByVal sender As ObjectByVal e As System.EventArgs)
        
If DataGrid1.CurrentCell.ColumnNumber = 3 Then
            MyCombo.Visible 
= False
            
If DataGrid1.Item(DataGrid1.CurrentCell) & "" = "" Then
                SendKeys.Send(
"*")
            
End If
            DataGrid1.Item(DataGrid1.CurrentCell) 
= MyCombo.Text
        
End If
    
End Sub


    
Private   Sub DataGrid1_CurrentCellChanged(ByVal sender As ObjectByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged
        
If DataGrid1.CurrentCell.ColumnNumber = 3 Then
            MyCombo.Visible 
= False
            MyCombo.Width 
= 0
            MyCombo.Left 
= DataGrid1.GetCurrentCellBounds.Left
            MyCombo.Top 
= DataGrid1.GetCurrentCellBounds.Top
            MyCombo.Text 
= DataGrid1.Item(DataGrid1.CurrentCell) & ""
            MyCombo.Visible 
= True
        
Else
            MyCombo.Visible 
= False
            MyCombo.Width 
= 0
        
End If
    
End Sub


    
Private   Sub DataGrid1_Scroll(ByVal sender As ObjectByVal e As System.EventArgs) Handles DataGrid1.Scroll
        MyCombo.Visible 
= False
        MyCombo.Width 
= 0
    
End Sub


    
Private   Sub DataGrid1_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles DataGrid1.Click
        MyCombo.Visible 
= False
        MyCombo.Width 
= 0
    
End Sub

你可能感兴趣的:(object,datagrid,Microsoft,VB.NET,WinForm,scroll)