在WPF中禁用密钥

时间:2011-08-29 11:47:24

标签: c# wpf

我有一个WPF应用程序。我需要禁用Alt + F4和Ctrl + Esc组合键。有没有办法在WPF中执行此操作?如果是这样,怎么样?

谢谢!

3 个答案:

答案 0 :(得分:2)

尝试覆盖KeyDown Event

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 :(得分:1)

如果您的所有操作都放在窗口内,请注册窗口的PreviewKeyDown - 事件,并且如果按下其中一个所需的键组合,则始终将事件的Handled属性设置为true。不要使用KeyDown事件。它经常发射得太晚了。使用PreviewKeyDown 如果你有多个窗口,你可以考虑制作一个附加属性并在处理程序中注册。

您可以通过Keyboard.Modifiers属性检查的修改键。

答案 2 :(得分:1)

您可以使用Windows API:SetWindowsHookEx

在此处查看示例:http://geekswithblogs.net/aghausman/archive/2009/04/26/disable-special-keys-in-win-app-c.aspx

注意该示例适用于Windows窗体,但也应该在WPF中稍作更改。