Vb.net 覆盖datagridview上的向下键Enter

Vb.net 覆盖datagridview上的向下键Enter,vb.net,datagridview,keypress,overriding,Vb.net,Datagridview,Keypress,Overriding,这个问题已经问了好几次,但都没有找到答案。 我需要覆盖datagridview上的Enter键,这样它就不会跳到下一行,而是允许我将输入的文本保存到数据库中。这需要在用户输入textboxcells时在textboxcells上完成 使用: Private Sub DataGridView1_mt_KeyDown(sender As Object, e As KeyEventArgs) Handles DataGridView1_mt.KeyDown If e.KeyCode = Ke

这个问题已经问了好几次,但都没有找到答案。
我需要覆盖datagridview上的Enter键,这样它就不会跳到下一行,而是允许我将输入的文本保存到数据库中。这需要在用户输入textboxcells时在textboxcells上完成

使用:

Private Sub DataGridView1_mt_KeyDown(sender As Object, e As KeyEventArgs) Handles DataGridView1_mt.KeyDown

    If e.KeyCode = Keys.Enter Then
    ...
不会工作,因为enter键不会在文本框单元格中触发。Keyup可以工作,但是已经很晚了,因为程序已经跳转到下一个单元格。Keypress与Keydown有相同的问题

你知道如何检测回车键的按键并覆盖它吗

更新: 如果选择了单元格,我可以检测Enter键,但如果在文本框中键入,则无法检测。(事实上,我需要的是检测用户何时完成键入并按enter键

Private Sub DataGridView1_EditingControlShowing(sender As System.Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1_mt.EditingControlShowing

    Dim tb As TextBox = CType(e.Control, TextBox)
    AddHandler tb.KeyDown, AddressOf TextBox_KeyDown

End Sub

Private Sub TextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
    If e.KeyCode = Keys.Enter Or e.KeyCode = Keys.Return Then

        MessageBox.Show("Success")    '''''DOES NOT WORK
    End If
    If e.KeyCode = Keys.Space Then

        MessageBox.Show("Success")    '''''WORKS
    End If
End Sub

像这样更改代码, 它起作用了

    If e.KeyCode = Keys.Down Then
        'code
    End If
你写的是
e.KeyCode=Keys.Return
。 换成
e.KeyValue=Keys.Return

它将工作

使用
PreviewKeyDown
事件而不是按键,如下更改代码:

Private Sub DataGridView1_EditingControlShowing(sender As System.Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1_mt.EditingControlShowing

    Dim tb As TextBox = CType(e.Control, TextBox)
    AddHandler tb.PreviewKeyDown, AddressOf TextBox_PreviewKeyDown

End Sub

Private Sub TextBox_PreviewKeyDown(ByVal sender As Object, ByVal e As PreviewKeyDownEventArgs)
    If e.KeyCode = Keys.Enter Or e.KeyCode = Keys.Return Then

        MessageBox.Show("Success")    '''''WILL WORK
    End If
    If e.KeyCode = Keys.Space Then

        MessageBox.Show("Success")    '''''WORKS
    End If
End Sub

即使单元格处于编辑模式,这也会捕获enter click。

已尝试,但它不起作用。..Keydown根本不会触发,无论我检查哪个键是否不起作用。enter/Return键不会故意触发事件。它在checkboxcell上工作正常,但在textcell上不起作用。