【发布时间】:2011-04-08 00:27:53
【问题描述】:
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
使用 e.keyValue 检查 DELETE 键所需的 keyValue 是什么?
【问题讨论】:
标签: vb.net winforms visual-studio
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
使用 e.keyValue 检查 DELETE 键所需的 keyValue 是什么?
【问题讨论】:
标签: vb.net winforms visual-studio
KeyEventArgs 对象包含一个名为“KeyCode”的成员,您可以将其与“Keys”枚举进行比较。
请注意,如果某些键由默认窗口系统处理,则它们可能不会引发 KeyDown 事件。我不确定,我现在无法检查,但您可能不会收到 Tab、Delete、Enter 等键的 KeyDown 事件。
您通常可以这样做(这是 C#,不是 VB,但应该类似):
public void MyControl_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
// delete was pressed
}
}
【讨论】:
如果您设置了表单的 KeyPreview 属性,那么表单将在事件传递给具有焦点的控件之前接收关键事件。例如,如果表单上有文本框和按钮,通常它们(具有焦点的控件)将捕获按键事件。所以一定要设置KeyPreview=true
使用它来捕获关键代码。
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Delete Then
'todo
End If
End Sub
【讨论】:
比较 e.keyValue 和 Keys.Delete
【讨论】:
检查Keys 枚举...
【讨论】: