Проверьте, нажата ли клавиша УДАЛЕНИЯ?

#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 перечисление…