禁用 WPF 中的按键

3

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

谢谢!

3个回答

3
尝试覆盖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
如果您的所有操作都在一个窗口中,那么请注册窗口的PreviewKeyDown事件,并且如果按下所需的键组合之一,则始终将事件的Handled属性设置为true。不要使用KeyDown事件,因为它经常太晚触发。请使用PreviewKeyDown。
如果您有多个窗口,可以考虑制作一个附加属性并在处理程序中进行注册。
您可以通过Keyboard.Modifiers属性检查修饰键。

1

你能否更新你的答案以支持WPF...?我需要一个WPF解决方案。 :) - LuvForAirplanes
1
@LuvForAirplanes 你看到这个了吗?https://social.msdn.microsoft.com/Forums/vstudio/en-US/bf73c89f-9722-4342-bccd-cf71dabd05f0/setwindowshookex-in-wpf?forum=wpf - Davide Piras
我会去看一下。非常感谢! :) - LuvForAirplanes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接