Обнаружение множественного нажатия клавиш в событии KeyPress
Я использую Visual Studio 2013 и пишу в VB.NET. Я создаю проект для стажировки в школе. Прямо сейчас в одной из моих форм у меня есть это, где вы должны ввести свое имя. Вот некоторая уместная информация.
Для TextBox у меня есть свойство ShortcutsEnabled = False
так что пользователь не может скопировать и вставить в текстовое поле, если это моя проблема, то мне просто придется обойтись без нее. Теперь я сделал это так, чтобы моя проверка ошибок Sub была проще и более сжатой, чтобы мне не пришлось проверять IsNumeric. Причина, по которой мне не нужно было проверять, заключается в том, что в событии KEYPRESS (не keydown) в текстовых полях оно ограничивает входные данные.
Private Sub Nametxt_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Nametxt.KeyPress
Dim AllowedChars As String = "abcdefghijklmnopqrstuvwxyz" 'The characters that you are allowed to enter
If e.KeyChar <> ControlChars.Back And _
ModifierKeys <> Keys.Shift _
And e.KeyChar <> Chr(32) Then
'e.KeyChar <> ControlChars.Back allows the user to use the backspac
'ModifierKeys <> Keys.Shift allows the user to use the shift key so they can enter Capital letters
'e.KeyChar <> Chr(32) allows the user to use the space bar so they can enter their First and Last name.
If AllowedChars.IndexOf(e.KeyChar) = -1 Then
e.Handled = True
End If
Теперь я пытаюсь позволить пользователю также нажать "Ctrl+A", чтобы он мог выделить весь текст в поле для удобства. Помните, что у меня есть свойство текстовых полей ShortcutsEnabled = False
Это не сработало:
If e.KeyChar <> ControlChars.Back And _
ModifierKeys <> Keys.Shift And _
e.KeyChar <> Chr(32) And _
Новая строка -> (e.KeyChar <> Chr(61) AndAlso ModifierKeys <> Keys.Control)
затем
End If
Примечание: поскольку я использую событие KEYPRESS, а не событие keydown, единственным e.key
жизнеспособный код e.keychar
||||| e.keycode
а также e.keyvalue
непригодны в этом обработчике событий