Как закрыть только один диалог по клавише 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;
}
Другие вопросы по тегам