KeyDown 事件和 AltGr

KeyDown event and AltGr

How can I detect Alt Gr key press?

我有 KeyDown 事件附加到 WPF window。

当我按下 Alt Gr 时,KeyEventArg 对象中的 Key 参数等于 LeftCtrl.

此外,当我检查 Keyboard.IsKeyDownKeyboard.Modifiers 时,它总是 returns Control 键被按下。

如何检测 AltGr 按键?最好的方法是什么?

你试过了吗:

void MainWindow_KeyDown(object sender, KeyEventArgs e) {
    if (e.Key == Key.RightAlt)
    {
        // Do something
    } }

如果没有,请定义您已经尝试过的方法。

看起来像这样 post 回答了您的问题:

How to distinguish between multiple key combination in wpf/c#

具体来说,这部分代码是您看到 AltGr 按键的方式:

private void WindowKeyDown(object sender, KeyEventArgs e)
{
    var alt = e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Alt);
    var ctrl = e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Control);
    var altGr = alt & ctrl;
    var shift = e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Shift);
}

这是因为 Alt GR 被 windows

注册为 "ALT + LEFT CTRL"

我找到了解决问题的方法。 AltGrMenu 组件处理。

我将我的 KeyDown 事件更改为 KeyUp,所以现在我可以正确捕捉 AltGr