Закрытие формы VB.NET при нажатии клавиши Escape
Я использую VB 2010 Express.
В C#
я бы установил свойство CancelButton
.
Для этой формы VB у меня нет кнопки CancelButton, поэтому я подозреваю, что мне нужно запрограммировать либо KeyPress
, либо KeyDown
.
- В чем разница между этими двумя событиями?
- Что я должен использовать?
-
Я предполагаю, что общий код для этого выглядит следующим образом:
If e.KeyCode = Keys.Escape Then
Close()
End If
У меня есть определенный код .Focus
в других элементах управления формы, тогда он становится бессмысленным, помещая это в процедуру событий основных форм, поскольку основная форма никогда не имеет фокуса.
Ответы
Ответ 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 на кнопку, которая выполняет функцию отмены