VB.net TextBox不会与Keydown事件一起聚焦()

时间:2014-02-24 16:51:03

标签: vb.net winforms textbox

当我按下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

感谢你!

2 个答案:

答案 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()也不起作用...