Как закрыть только один диалог по клавише ESC в WPF/WinForms?
У меня есть форма WPF. Это обрабатывает KeyUp
событие и если выпущенный ключ был Escape, он закрывается сам.
Также в этой форме есть кнопка для отображения некоторой формы Windows в виде диалога. Он обрабатывает клавишу Escape таким же образом.
Что происходит, когда я нажимаю клавишу Escape в дочернем диалоге, оба окна закрываются. Я ожидаю, что в этом случае закроется только дочернее окно Windows Forms.
Какой правильный способ справиться с этим?
2 ответа
Решение
Самый простой вариант для WPF - установить свойство кнопки IsCancel
в true
, Тогда, если вы нажмете ESC
форма будет закрыта.
Попробуйте установить для обработанного свойства события KeyUp значение true:
private void myDialogForm_KeyUp(object sender, KeyEventArgs e)
{
e.Handled = true;
}