Вы можете установить свойство в форме, чтобы сделать это для вас, если у вас есть кнопка в форме, которая уже закрывает форму.
Установите для этой кнопки свойство 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);
}