ComboBox 控件添加到 DataGrid 控件的简单方法

转帖|其它|编辑:郝浩|2010-08-12 10:55:27.000|阅读 876 次

概述:有很多方法可以将 ComboBox 控件添加到 DataGrid 控件。其中多数方法涉及到使用 DataGrid 的 ColumnStyles 集合。不过,本文将使用一种较为简单的方法,将下拉 ComboBox 控件添加到 DataGrid 的控件集合。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  有很多方法可以将 ComboBox 控件添加到 DataGrid 控件。其中多数方法涉及到使用 DataGrid 的 ColumnStyles 集合。不过,本文将使用一种较为简单的方法,将下拉 ComboBox 控件添加到 DataGrid 的控件集合。

Imports System.Data.SqlClient
Imports System.Windows.Forms
将下面的代码添加到代码窗口的“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 Object, ByVal 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 Object, ByVal 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 Object, ByVal 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 Object, ByVal e As System.EventArgs) Handles DataGrid1.Scroll
        MyCombo.Visible = False
        MyCombo.Width = 0
    End Sub

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

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP