Private Sub GridView_CellMouseMove(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles GridView.CellMouseMove
Select Case GridView.Columns(e.ColumnIndex).Name
Case "Ad_Edit", "Size_Caption", "Demo_Code"
GridView.EditMode = DataGridViewEditMode.EditOnEnter
Case Else
GridView.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2
End Select
End Sub
Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
If DataGridView1(e.ColumnIndex, e.RowIndex).EditType = GetType(DataGridViewComboBoxEditingControl) Then
DataGridView1.BeginEdit(True)
Dim comboboxCell As DataGridViewComboBoxEditingControl = DataGridView1.EditingControl
If comboboxCell Is Nothing Then Return
comboboxCell.DroppedDown = True
End If
End Sub
7条答案
按热度按时间gcmastyq1#
我知道这是一个老问题,但我想我会给我的解决方案给予给任何人在那里可能需要能够做到这一点。
当我找不到答案的时候...我确实找到了一个answer到一个不同的问题,帮助我。
这是我的解决方案:
以上代码必须绑定到datagridview的CellEnter事件中。
希望这对你有帮助!
**编辑:**增加了列索引检查,防止整行被选中时崩溃。
谢谢Up All Night的编辑
**edit 2:**代码现在绑定到CellEnter事件而不是CellClick事件。
谢谢HaraldDutch的编辑
**edit 3:**任何更改都将立即提交,这将保存您在另一个单元格中单击以更新当前组合框单元格。
xdnvmnnf2#
在DataGridView上设置以下内容:
这可能是最简单的解决方案,也是SO上许多用户在被问到这个问题时的解决方法。
编辑:
按照here执行以下操作:
设置编辑模式:
修改datagridview上的EditingControlShowing事件:
这会让你得到你想要的结果。如果不行就告诉我。
o75abkj43#
我只将
datagridview
的EditMode
属性更改为EditOnEnter
,它工作得很好。uqzxnwby4#
如果将整个网格设置为EditOnEnter,那么当您在文本列上时,您可以获得一些非常时髦的活动。这是我的解决方案,应该是不言自明的。如果您不知道列名,您可以在mousemove上检查单元格类型。
x6h2sr285#
将组合框的DropDownStyle属性设置为DropDownList.
5kgi1eie6#
也许老..但是一定要将
ReadOnly
属性设置为false
,否则单元格不会进入编辑模式,因此EditingControl
返回null,并且强制转换DroppedDown = true
将强制转换NullReferencException
。uplii1fm7#
我在我的datagridviews中使用这个解决方案。