【发布时间】:2014-04-04 08:02:44
【问题描述】:
This question has already been asked several times but none found an answer.
我需要覆盖 datagridview 上的 Enter 键,这样它就不会跳转到下一行,但允许我将输入的文本保存到数据库中。这需要在用户输入文本框单元格时完成。
使用:
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 键的按键并覆盖它吗?
更新: 如果选择了一个单元格,我可以检测到 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
【问题讨论】:
标签: vb.net datagridview keypress overriding