Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net WinForm应用程序的DataGridView中的组合框_Vb.net_Winforms_Datagridview_Combobox_Datagridviewcolumn - Fatal编程技术网

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