我有一个WPF应用程序。我需要禁用Alt + F4和Ctrl + Esc组合键。有没有办法在WPF中执行此操作?如果是这样,怎么样?
谢谢!
答案 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中稍作更改。