表单keyDown不工作?

时间:2011-04-03 20:29:59

标签: vb.net winforms visual-studio

Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    If e.Control Then
        MessageBox.Show("aaaa")
    End If
End Sub

如您所见,我的表单将检查按下控制键的时间。 但它不起作用。为什么呢?

3 个答案:

答案 0 :(得分:16)

我现在不在电脑附近所以我无法测试这个,但是当我想要在表单上获取关键事件时,我会将Form1.KeyPreview设置为True(或类似的东西)。

答案 1 :(得分:1)

工作正常。我假设你的表单中有其他控件。其中一个将获得焦点,而不是形式。键盘输入仅进入具有焦点的控件。

您可以将表单的KeyPreview属性设置为True。 Winforms的方法是覆盖ProcessCmdKey()方法。

答案 2 :(得分:0)

您需要在加载表单时将 KeyPreview 设置为true,它应该可以正常工作

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    Me.KeyPreview = True
End Sub

Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
    MsgBox(e.KeyChar)
End Sub