Я хочу установить фокус на конкретный textbox
, когда я нажимаю ALT + KOME.VB.net TextBox не будет сфокусирован() с событием Keydown
Однако, когда я нажимаю комбинацию клавиш быстрого доступа, он фокусирует что-то еще. Даже я нажал CTRL + P, txtAuthor
не получил никакого фокуса, пока какой-то странный Button control
или другой textbox
получил фокус.
Я проверил, что нет дублированных комбинаций клавиш. например: & Нажмите здесь ..
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
спасибо!
код неправильно, он забывает установить е .Handled = True. Таким образом, все возможно, после этого может выполняться другая мнемоника или ярлык и беспорядок вверх. –
Также этот код предполагает, что форма выбрана, что не является слишком легко контролируемой проблемой (например, если текстовое поле, содержащееся в форме, выбрано, ваш код не будет запущен). Кажется, что вы должны полагаться на глобальные крючки (то есть, позволяя коду вызываться каждый раз, когда данная комбинация клавиш нажимается независимо от выбранного элемента управления). – varocarbas
@HansPassant на самом деле я удалил e.Handled = True, потому что это не исправить проблему. Я добавил этот код снова, но ничего не изменилось. – klados