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