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上不起作用。