当Cell在EditMode中时,如何处理DataGridView中的Enter Key Press?

时间:2016-07-04 12:05:50

标签: vb.net winforms

我有一个DataGridView,我已将AllowUserToAddRows属性设为false,并且在Load形式的事件处理程序中,我使用函数向网格添加了一个新行。现在,当用户编辑datagidview并且一旦他结束编辑并按 Enter ,我想调用该函数再次向网格添加新行。

我尝试了KeyDown DataGridView事件,但是当单元格处于编辑模式时,事件似乎不会触发。

2 个答案:

答案 0 :(得分:1)

 Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
If msg.WParam.ToInt32() = Keys.Enter Then
  DataGridView1.EndEdit()
  MessageBox.Show("Enter key is pressed")
  Return True
End If

Return MyBase.ProcessCmdKey(msg, keyData)
End Function

在您的情况下使用此功能

答案 1 :(得分:0)

Microsoft说您不能向数据绑定的DataGridView添加新行,但这不是事实。 我假设您要在网格末尾添加新行。默认情况下,DataGridView控件的空白行位于网格底部,索引为-1。要以编程方式添加新行,请执行以下操作:

Dim rowindex as Int32
rowIndex = 
DataGridView1.Rows.GetLastRow(includeFilter:=0)
DataGridView1.CurrentCell = 
DataGridView1.Rows.Item(rowIndex).Cells(1)
DataGridView1.BeginEdit(selectAll:=True)

这将为您提供新的一行。如果将DataGridView设置为EditOnEnter,则单击单元格时,将在最左侧看到钢笔图标。