Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁用WPF中的密钥_C#_Wpf - Fatal编程技术网

C# 禁用WPF中的密钥

C# 禁用WPF中的密钥,c#,wpf,C#,Wpf,我有一个WPF应用程序。我需要禁用Alt+F4和Ctrl+Esc组合键。在WPF中有这样做的方法吗?如果是,怎么做 谢谢 如果您的所有操作都放在窗口内,请注册到窗口的-事件,并始终将事件的Handled属性设置为true(如果按了所需的组合键之一)。不要使用KeyDown事件。它经常开火太晚。使用PreviewKeyDown。 如果有多个窗口,可以考虑创建一个附加属性并在处理程序中注册 您可以通过Keyboard.Modifiers-property检查修改器键 您可以使用windows API

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


谢谢

如果您的所有操作都放在窗口内,请注册到窗口的-事件,并始终将事件的Handled属性设置为true(如果按了所需的组合键之一)。不要使用KeyDown事件。它经常开火太晚。使用PreviewKeyDown。
如果有多个窗口,可以考虑创建一个附加属性并在处理程序中注册


您可以通过Keyboard.Modifiers-property检查修改器键

您可以使用windows API:
SetWindowsHookEx

请参见此处的示例:

注意该示例适用于Windows窗体,但也适用于WPF,只需稍作修改。

尝试覆盖:


您能否更新您的答案以支持WPF。。。?我需要WPF解决方案。:)@你看到这个了吗?我去看看。非常感谢!:)
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);
    }
}