Vb.net 按F1键时将焦点设置为文本框
我一直在努力让这个工作,但它做我的头,不知道你们的专家是否可以帮助我 在我的表单中,当我在键盘上按F1键时,我想将焦点设置为Vb.net 按F1键时将焦点设置为文本框,vb.net,Vb.net,我一直在努力让这个工作,但它做我的头,不知道你们的专家是否可以帮助我 在我的表单中,当我在键盘上按F1键时,我想将焦点设置为文本框,我已经编写了代码,但当我按F1键时,它不起作用。我做错了什么?我还将keypreview设置为true 代码如下: Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp If e.KeyData = Keys.F1 Then
文本框
,我已经编写了代码,但当我按F1键时,它不起作用。我做错了什么?我还将keypreview设置为true
代码如下:
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
If e.KeyData = Keys.F1 Then
txtemployeeno.Focus()
End If
End Sub
问题在于,
KeyUp
事件没有触发,因为表单在技术上没有输入焦点(尽管它可能被激活)。如果希望使用KeyPreview
属性,则需要使用KeyPress
事件而不是keypup
或者,您可以始终重写ProcessCmdKey
函数。只需将以下方法添加到表单的代码中:
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
If keyData = Keys.F1 Then
txtemployeeno.Focus()
Return True
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
我已经更改了它,但我得到的密钥数据不是system.windowsforms.KeyPress事件的成员?您将无法使用KeyPress轻松检查密钥数据。上面我建议使用
ProcessCmdKey
可能更适合您的工作。附加说明:我不喜欢玩这张牌,但它在我的机器上工作=(您将ProcessCmdKey
代码放置在包含文本框的表单中了吗?请在txtemployeeno.Focus()
上放置一个断点,并确保到达该代码行。