禁用WPF中的键
答
如果你的所有动作放在一个窗口内,注册到窗口的事件PreviewKeyDown,并且如果按下了其中一个所需的组合键,则始终将事件的Handled-property设置为true。不要使用KeyDown事件。它通常发生得太晚。使用PreviewKeyDown。
如果您有多个窗口,您可以考虑制作一个附加属性并在处理程序中注册。
修改键您可以通过Keyboard.Modifiers属性进行检查。
答
,你可以使用windows API:SetWindowsHookEx
在这里看到一个例子:http://geekswithblogs.net/aghausman/archive/2009/04/26/disable-special-keys-in-win-app-c.aspx
注意的例子是用于Windows窗体,但也应努力在WPF与细微的变化。
答
尝试重写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);
}
}