Vb.net 按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键时,我想将焦点设置为
文本框
,我已经编写了代码,但当我按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()
上放置一个断点,并确保到达该代码行。