Ответ 1
Вы можете установить свойство в форме, чтобы сделать это для вас, если у вас есть кнопка в форме, которая уже закрывает форму.
Задайте CancelButton
свойство формы для этой кнопки.
Получает или задает элемент управления кнопки, который нажимается, когда пользователь нажимает клавишу Esc.
Если у вас нет кнопки отмены, вам нужно добавить обработчик KeyDown
и проверить для ключа Esc следующее:
private void Form_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
}
Вам также необходимо установить для свойства KeyPreview
значение true.
Возвращает или задает значение, указывающее, будет ли форма получать ключевые события до того, как событие будет передано элементу управления, имеющему фокус.
Однако, как указывает Гарго в ответе , это будет означать, что нажатие Esc, чтобы прервать редактирование элемента управления в диалоговом окне, также будет иметь эффект закрытие диалога. Чтобы избежать переопределения метода ProcessDialogKey
следующим образом:
protected override bool ProcessDialogKey(Keys keyData)
{
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
{
this.Close();
return true;
}
return base.ProcessDialogKey(keyData);
}