在文本框中按vb.net获取箭头键

在文本框中按vb.net获取箭头键,vb.net,Vb.net,在文本框中,我可以按enter键和escape键,但不能按箭头键(上下左右)。相反,它会在文本框内移动光标。我想我必须推翻这一点,但怎么做?只有当我在文本框中时,我才能捕捉到这些事件,…因此表单侦听器是不可能的(?) 您可以尝试: Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As

在文本框中,我可以按enter键和escape键,但不能按箭头键(上下左右)。相反,它会在文本框内移动光标。我想我必须推翻这一点,但怎么做?只有当我在文本框中时,我才能捕捉到这些事件,…因此表单侦听器是不可能的(?)

您可以尝试:

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys)  As Boolean
    If msg.WParam.ToInt32() = CInt(Keys.Left) And txtMytext.Focused = True Then
        'your code
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
End Function

valter

在DatVM和Paulch先生的有益评论之后,发布了我自己问题的答案:

我使用了
KeyDown
事件,而不是
KeyPress

Private Sub txtMyText_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtMyText.KeyDown

    If e.KeyCode = Keys.Up Then
        MsgBox("UP")
    End If

End Sub

尝试使用
KeyDown
keydup
代替,KeyPress不支持所有键。这是精心设计的。我想说,如果你使用
键控
,这会更容易。然后您会得到
KeyEventArgs
,它们有一个
KeyCode
属性,您可以直接检查
Keys.Up
。@DatVM做到了,谢谢!我把它贴在下面作为答案:D
Private Sub txtMyText_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtMyText.KeyDown

    If e.KeyCode = Keys.Up Then
        MsgBox("UP")
    End If

End Sub