这个问题已经被问过很多次,但都没有找到答案。
我需要覆盖 datagridview 上的 Enter 键,使其不跳到下一行,而是允许我将输入的文本保存到数据库中。这需要在用户输入时对 textboxcells 进行操作。
使用:
Private Sub DataGridView1_mt_KeyDown(sender As Object, e As KeyEventArgs) Handles DataGridView1_mt.KeyDown
If e.KeyCode = Keys.Enter Then
...
由于回车键不会在文本框单元格中触发,因此 keyup
函数无法使用,而它会太晚,因为程序已经跳转到下一个单元格。 keypress
函数与 keydown
函数存在相同的问题。
有什么想法可以检测回车键的按下并覆盖它吗?
更新: 如果选择了单元格,则可以检测到按下回车键,但是如果我正在输入文本框,则无法检测到按下回车键。(实际上,我需要检测用户何时完成输入并按下 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