Подтвердить что ты не робот

Закрытие формы VB.NET при нажатии клавиши Escape

Я использую VB 2010 Express.

В C# я бы установил свойство CancelButton.

Для этой формы VB у меня нет кнопки CancelButton, поэтому я подозреваю, что мне нужно запрограммировать либо KeyPress, либо KeyDown.

  • В чем разница между этими двумя событиями?
  • Что я должен использовать?
  • Я предполагаю, что общий код для этого выглядит следующим образом:

    If e.KeyCode = Keys.Escape Then
        Close()
    End If
    

У меня есть определенный код .Focus в других элементах управления формы, тогда он становится бессмысленным, помещая это в процедуру событий основных форм, поскольку основная форма никогда не имеет фокуса.

4b9b3361

Ответ 1

Установите ключ формы для

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    If e.KeyCode = Keys.Escape Then Me.Close()
End Sub

Затем не забудьте установить для свойства KeyPreview в форме значение TRUE.

Ответ 2

  • Вы говорите: "Форма VB не имеет кнопки" Отмена "- так что сделайте ее невидимой. a). Добавить кнопку в форму. b.) Установите для свойства Видимое значение False. (Помните, что компьютеры не ошибаются - они лгут. Так что пусть даже станет.)
  • В меню свойств формы установите для параметра Отменa > свойство скрытую кнопку отмены.
  • В меню свойств формы установите для свойства KeyPreview значение True.
  • Дважды щелкните по невидимому CancelButton и добавьте Me.Dispose()
  • Теперь у вас есть проблема с Micro-Nasty. Одним из основных принципов структурированного программирования является то, что "должен быть только один выход из рутины". Вы не хотите обрабатывать процедуру выхода в двух разных местах. И ваш пользователь может выйти, используя "Esc" в верхнем правом углу. Чертовски структурированное программирование. Так.,.
  • Верхний правый черный "X" на красной кнопке вызывает FormName_Deactivate - если имя вашей формы FormSanta, то это FormSanta_Deactivate. Для простоты, не обращая внимания на правильный путь, (микро-крепостные в вашем бархатном магазине пота, вы слышите, как я плачу?) Дайте вашей правой правой кнопке "X" и вашей невидимой кнопке выхода тот же код. Затем добавьте Me.Close()

Ответ 3

"KeyPreview" Свойство формы должно быть установлено в true, иначе это не сработает...

Ответ 4

Мое решение также находится в свойствах формы:

  • установите свойство CancelButton на кнопку, которая выполняет функцию отмены