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

 

创建示例

<script type="text/javascript">loadTOCNode(2, 'summary');</script>
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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值