KeyDown事件到下一行

时间:2013-01-21 11:38:41

标签: vb.net gridview keydown

我在VS

中创建了这个表单

enter image description here

我自动将NumPlace TextBox设置为1,当我按下Enter键以在下一行自动增加NumPlace时,我想要这样做。

这是我写的代码:

Private Sub DataGridView1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
        If e.KeyCode = Keys.Enter Then
            MsgBox("Enter key is pressed !")
        End If
    End Sub

但它不起作用只有当我选择一些行结束时按“Enter”但当我更改ComboBox的值或当我选择NumPlace TextBox然后我按下{时{1}}该事件不起作用。

3 个答案:

答案 0 :(得分:1)

您需要检查ColIndex和RowIndex ......................

Dim currCell As DataGridViewCell = DataGridView1.CurrentCell    

答案 1 :(得分:0)

DataGridView1_KeyDown事件仅在焦点位于DataGridView1时触发。请尝试处理Form1_KeyDown事件。

Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.Enter Then
            MsgBox("Enter key is pressed !")
        End If
    End Sub

但是,您应该在KeyPreviewTrue中将Form1 Form Designer属性设置为Form Load,以便表单在事件传递给控件之前接收关键事件有焦点的。

请参阅this了解详情

答案 2 :(得分:0)

解决方案是使用事件KeyUp代替KeyDown