当我按下ALT + SOME KEY时,我想将焦点设置为特定的textbox
。
然而,当我按下快捷键组合时,它会聚焦其他东西。即使我按下CTRL + P,txtAuthor
根本没有焦点,而有些奇怪的Button control
或另一个textbox
得到了关注。
我检查过没有重复的组合键。例如:& Press Here ..
plus:调试确认当我按Alt + Q时,执行下面的txtQueue.Focus()
代码。但是,某种程度上txtQueue不会集中注意力。
加:KeyPreview
设置为True
Private Sub frmEdit_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
'Alt+Q
If e.KeyCode = Keys.Q AndAlso e.Modifiers = Keys.Alt Then
txtQueue.Focus()
Exit Sub
End If
'Alt+D
If e.KeyCode = Keys.D AndAlso e.Modifiers = Keys.Alt Then
txtDynamic.Focus()
Exit Sub
End If
'Alt+K
If e.KeyCode = Keys.K AndAlso e.Modifiers = Keys.Alt Then
txtTime.Focus()
Exit Sub
End If
'Alt+P
If e.KeyCode = Keys.P AndAlso e.Modifiers = Keys.Alt Then
txtAlgorithm.Focus()
Exit Sub
End If
End Sub
感谢你!
答案 0 :(得分:0)
我会设置断点,因为您似乎已经完成了检查是否设置了正确的焦点,然后继续单步执行代码(VStudio中的F8)以检查没有任何内容可以将焦点移动到其他位置。相同的控件是否总能得到关注?
此外,我会更改您的代码以合并一个精选案例......
Private Sub frmEdit_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.Modifiers = Key.Alt Then
Select Case (e.KeyCode)
'Alt+Q
Case Keys.Q
txtQueue.Focus()
Exit Select
'Alt+D
Case Keys.D
txtDynamic.Focus()
Exit Select
'Alt+K
Case Keys.K
txtTime.Focus()
Exit Select
'Alt+P
Case Keys.P
txtAlgorithm.Focus()
Exit Select
End Select
End If
End Sub
答案 1 :(得分:0)
覆盖ProcessCmdKey()有效!
我不知道原因,但是,即使我单击Form等中的Form,Buttons等间歇性的ProcessCmdKey()也不起作用...