在KeyDown上捕获keys.TAB

Kar*_*yal 4 vb.net tabs keydown onkeydown

我想在Keydown事件上捕获TAB按键.我可以看到另一篇关于如何在文本框中按Tab键时触发事件的帖子

但是,在上面的链接中,发布的解决方案对我来说不起作用,我在下面提到过.

Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) _
                         Handles TextBox1.KeyDown
    If e.KeyCode = Keys.Tab Then
       e.SuppressKeyPress = True
       'do something
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

出于测试目的,我在FORM1上添加了2个简单的文本框,并编写下面的代码来捕获KeyDown事件上的TAB.

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    If e.KeyCode = Keys.Tab Then
        e.SuppressKeyPress = True
        MsgBox("TAB DOWN")
    End If
End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    Me.Text = e.KeyChar
End Sub

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
    If e.KeyCode = Keys.Tab Then
        MsgBox("TAB UP")
    End If
End Sub

Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
    Me.Text = "LEAVE"
End Sub
Run Code Online (Sandbox Code Playgroud)

上面的代码应该假设在按下TAB时在KeyDown上显示一个消息框.它不起作用.

请让我知道我做错了什么.提前致谢!!!

Kar*_*yal 7

我发现了一个名为PreviewKeyDown()的新事件

 Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    If e.KeyCode = Keys.Tab Then
        Me.Text = "TAB Capture From TextBox1_KeyDown At " & Now.ToString
    End If
End Sub

Private Sub TextBox1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown
    If e.KeyCode = Keys.Tab Then
        Me.Text = "TAB Capture From TextBox1_PreviewKeyDown At " & Now.ToString
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

如果您将执行上面的代码,您将能够在PreviewKeyDown()事件上捕获TAB键.