#vb.net #winforms #visual-studio
#vb.net #winforms #visual-studio
Вопрос:
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Какое значение ключа мне нужно для проверки наличия клавиши удаления с помощью e.KeyValue?
Ответ №1:
Объект KeyEventArgs содержит элемент с именем «keyCode«, который вы можете сравнить с перечислением «Keys«.
Обратите внимание, что некоторые клавиши могут не вызывать событие KeyDown, если они обрабатываются оконной системой по умолчанию. Я не уверен, и я не могу проверить это прямо сейчас, но вы можете не получить событие KeyDown для таких клавиш, как Tab, Delete, Enter и т.д.
Обычно вы можете сделать что-то вроде этого (это C #, а не VB, но должно быть похоже):
public void MyControl_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
// delete was pressed
}
}
Ответ №2:
Если вы установите свойство формы KeyPreview, то форма будет получать ключевые события до того, как событие будет передано элементу управления, имеющему фокус. Например, если у вас есть текстовые поля и кнопки в форме, обычно они (элемент управления с фокусом) фиксируют событие нажатия клавиши. Поэтому обязательно установите KeyPreview=true
Используйте это для записи кода клавиши.
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Delete Then
'todo
End If
End Sub
Ответ №3:
Сравните e.keyValue
с Keys.Delete
Ответ №4:
Проверьте Keys
перечисление…