Как закрыть только один диалог по клавише ESC в WPF / WinForms? - PullRequest
5 голосов
/ 16 апреля 2010

У меня есть форма WPF. Он обрабатывает событие KeyUp и, если выпущенный ключ был Escape, закрывается сам.

Также в этой форме есть кнопка для отображения формы Windows в виде диалога. Он обрабатывает клавишу Escape таким же образом.

Что происходит, когда я нажимаю клавишу Escape в дочернем диалоге, оба окна закрываются. Я ожидаю, что в этом случае будет закрыто только дочернее окно Windows Forms.

Какой правильный способ справиться с этим?

Ответы [ 2 ]

13 голосов
/ 16 апреля 2010

Самый простой вариант для WPF - установить для свойства кнопки IsCancel значение true. Затем, если вы нажмете ESC, форма закроется.

1 голос
/ 16 апреля 2010

Попробуйте установить для обработанного свойства события KeyUp значение true:

private void myDialogForm_KeyUp(object sender, KeyEventArgs e)
{
    e.Handled = true;
}
...