2011-08-29 60 views
0

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

谢谢!

回答

1

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

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

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); 
    } 
}