How to: add the ComboBox control to the Windows form DataGrid Control
Applicable
This document references the following Microsoft. NET Framework class library namespace:
- System. Data. sqlclient
- System. Windows. Forms
Content of this task
Summary
This step-by-step guide describes howComboBoxAdd controlDataGridControl method.
There are many waysComboBoxAdd controlDataGridControl. Most of the methods involveDataGridOfColumnstylesSet. However, this article will use a relatively simple method, drop-downComboBoxAdd controlDataGridOfWidgetSet.
Back to the top
Example
- Follow these steps to create a New Visual Basic Windows application project:
- Start Microsoft Visual Studio. NET.
- InFileMenu, pointingNewAnd then clickProject.
- InCreate a projectIn the dialog box, clickObject TypeUnderVisual Basic ProjectAnd then clickTemplateUnderWindows Applications. By default, form1 is added.
- SetDataGridControls are dragged from toolbox to form1.
- Add the following code to the "Declaration" section of form1.vb at the top of the code window:
Imports System.Data.SqlClientImports System.Windows.Forms
- Add the following code to the "Windows Forms designer code generation" section of the Code window:
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
- Modify the connection string according to your environment requirements.
- Press F5 to run the project. ClickDataGridA field in the "title" column. You will notice thatComboBoxControl is located inDataGrid.
- ExpandComboBox. You will notice that a title list is displayed.