Ответ 1
Задайте свойство CancelButton
формы для ссылки на кнопку "Отмена".
Часто при использовании программного обеспечения в эти дни клавиша ESC закрывает диалог, не сохраняя никаких изменений, которые я сделал. Мне это особенно нравится, потому что хотя в диалоговом окне может быть кнопка отмены, я не обязательно хочу, чтобы мы нажали кнопку мыши или вкладку на кнопку отмены. Это хороший чистый способ сказать: "Ой, не хотел этого делать!" к программному обеспечению. На самом деле, я нахожу, что меня раздражает программное обеспечение, которое не реализует эту функцию, и я не могу поверить, что это еще не сделано под капотом Winforms - кажется мне интуитивным...
Я посмотрел на подключение к событию Form KeyPress или пытаюсь смоделировать "Отменить" DialogResult и т.д. Кажется, есть несколько способов обойти это...
Итак, вопрос: какой самый чистый способ привязать ключ ESC для закрытия диалога без сохранения каких-либо изменений?
Любая помощь от тех, у кого есть опыт в этом, очень ценится!
Задайте свойство CancelButton
формы для ссылки на кнопку "Отмена".
Чтобы сделать это, когда у вас нет кнопки отмены, вы можете переопределить processcmdkey:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Escape)
{
this.Close();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
Вы также можете установить свойство CancelButton формы на кнопку отмены:
this.CancelButton = this.cancelButton;
В Visual Studio вы можете установить это через Свойства формы, и код добавляется в файл Form.Designer.cs.
В определенной степени это зависит от вашей среды разработки - в .NET, встроенной в нее (как это было в vb.old), у форм есть свойство "Отменить кнопку". Если это свойство установлено, кнопка "щелкнула" 'всякий раз, когда пользователь нажимает клавишу "ESC".
Для ключа 'ENTER' имеется соответствующее свойство "AcceptButton".
Из памяти стандартные сообщения и диалоговые окна по умолчанию будут следовать приведенной выше логике - хотя, конечно, можно указать кнопку по умолчанию для окна сообщения, в котором вы не хотите, чтобы что-то происходило без пользователя, положительно утверждающего, что то, что они хочу сделать.
Вы можете сделать это:
button b = new button();
b.click = button_click;
this.cancelbutton = b;
protected void button_click(object sender,eventargs e)
{
this.close();
}
If e.KeyCode = Keys.Escape Then
If MsgBox("Are you sure to exit system (Y/N) ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question) = MsgBoxResult.No Then Exit Sub
dashboard.Close()
ElseIf e.KeyCode = Keys.F5 Then
MessageBox.Show("F5")
End If
Попробуйте этих парней. Это For Show messageBox для подтверждения Yes или No Before Closing. Forms. Вы можете добавить этот код в свою форму внутри формы Event с именем Keydown. Здесь "приборная панель" - это название нашей формы, которая будет закрыта. Этот код показывает вам окно с кнопками "Да" или "Нет". Если вы выберите "Да", значит, он закроет вашу форму. Если вы выберите "Нет", действие отменяет действие. Форма остается той же