Vb.net WinForm应用程序的DataGridView中的组合框
在Vb.net WinForm应用程序的DataGridView中的组合框,vb.net,winforms,datagridview,combobox,datagridviewcolumn,Vb.net,Winforms,Datagridview,Combobox,Datagridviewcolumn,在DataGridView中使用ComboBox: 实施: DataGridView与datatable绑定,当使用鼠标单击任何行时,该行单元格元素将转换为ComboBox,现在用户可以选择ComboBox元素 问题: 它在所有情况下都能正常工作, dgvTables(e.ColumnIndex,e.RowIndex)=l_CMBCTableList 但当e.ColumnIndex和e.RowIndex具有相同的值时,问题就出现了,当时ComboBox列表项看起来很不稳定,用户无法选择此Comb
DataGridView
中使用ComboBox
:
实施:
DataGridView
与datatable绑定,当使用鼠标单击任何行时,该行单元格元素将转换为ComboBox
,现在用户可以选择ComboBox
元素
问题:
它在所有情况下都能正常工作,
dgvTables(e.ColumnIndex,e.RowIndex)=l_CMBCTableList
但当e.ColumnIndex
和e.RowIndex
具有相同的值时,问题就出现了,当时ComboBox
列表项看起来很不稳定,用户无法选择此ComboBox
项
第一次
代码:
一,
二,
三,
您需要编辑DataGridView模板,并为组合框提供一个标签,您可以在代码中引用该标签。单击时,您的组合框是否正在刷新页面?感谢您的回复,但问题是,当我选择datagridview的单元格时,我只是在dgvTables(e.ColumnIndex,e.RowIndex)=l_CMBCTableList中添加DataGridViewComboxCell对象,现在选择下拉值时出现了问题。第一次无法从下拉列表中选择项目。列表获得跳转。
Private Sub dgvTables_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvTables.CellClick
If e.ColumnIndex > -1 Then
If dgvTables.Columns(e.ColumnIndex).Name.Contains("TableCaption") Then
dgvTables(e.ColumnIndex, e.RowIndex) = l_cmbTableList ' Problem is coming at that point, dropdown list is jumpy, user not able to select item .
l_cmbTableList.DisplayMember = CONST_TableCaption
l_cmbTableList.ValueMember = CONST_TableCaption
l_cmbTableList.DataSource = dt
l_cmbTableList.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
End If
Private Sub dgvTables_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgvTables.EditingControlShowing
'Set the value of the object
cmbEditingComobTables = CType(e.Control, ComboBox)
If Not cmbEditingComobTables Is Nothing Then
AddHandler cmbEditingComobTables.SelectedIndexChanged, AddressOf editingCombo_SelectedIndexChanged
cmbEditingComobTables.DrawMode = DrawMode.OwnerDrawFixed
AddHandler cmbEditingComobTables.DrawItem, AddressOf cmb_DrawItem ' This attached event will fire and set the color of combo box item
End If
Private Sub cmb_DrawItem(ByVal sender As System.Object, ByVal e As DrawItemEventArgs)
If Not e.Index = -1 Then
Dim cmb As ComboBox = DirectCast(sender, ComboBox)
Dim dr As DataRowView = DirectCast(cmb.Items(e.Index), DataRowView)
e.DrawBackground()
e.Graphics.DrawString(dr(cmb.DisplayMember).ToString(), e.Font, New SolidBrush(Color.Gray), e.Bounds.X, e.Bounds.Y)
End If