Отключить ключи в WPF - PullRequest
       2

Отключить ключи в WPF

1 голос
/ 29 августа 2011

У меня есть приложение WPF. Мне нужно отключить комбинации клавиш Alt + F4 и Ctrl + Esc. Есть ли способ сделать это в WPF? Если да, то как?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 29 августа 2011

Попробуйте переопределить событие KeyDown :

protected override void OnKeyDown(KeyEventArgs e)
{
    if (Keyboard.Modifiers == ModifierKeys.Alt && e.SystemKey == Key.F4 ||
        Keyboard.Modifiers == ModifierKeys.Control && e.SystemKey == Key.Escape)
    {
        e.Handled = true;
    }
    else
    {
        base.OnKeyDown(e);
    }
}
1 голос
/ 29 августа 2011

вы можете использовать Windows API: SetWindowsHookEx

см. Пример здесь: http://geekswithblogs.net/aghausman/archive/2009/04/26/disable-special-keys-in-win-app-c.aspx

Обратите внимание пример для Windows Forms, но должен работать и в WPF с небольшими изменениями.

1 голос
/ 29 августа 2011

Если все ваши действия помещены в окно, зарегистрируйтесь для PreviewKeyDown события окна и всегда устанавливайте для свойства Handled-события значение true, если одна из требуемых комбинаций клавишнажат.Не используйте KeyDown-событие.Часто срабатывает слишком поздно.Используйте PreviewKeyDown.
Если у вас более одного окна, вы можете подумать о создании присоединенного свойства и зарегистрироваться там в обработчике.

Ключи-модификаторы, которые можно проверить через свойство Keyboard.Modifiers-property.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...