2016-09-13 11 views
0

Как я могу обнаружить нажатие клавиши Alt Gr?Событие KeyDown и AltGr

У меня есть KeyDown событие, прикрепленное к окну WPF.

При нажатии Alt Gr то параметр Key в KeyEventArg объекта равен LeftCtrl.

Также, когда я проверяю Keyboard.IsKeyDown и Keyboard.Modifiers, он всегда возвращает Control нажатием клавиши.

Как определить AltGr нажатие клавиши? Каков наилучший способ сделать это?

+0

Что вы хотите сказать? – hcham1

+0

Как я могу нажать клавишу «AltGr»? – Marek

+0

** Alt Gr ** - это просто ** Alt + Ctrl ** и не может быть обнаружен с помощью 'KeyDown' в виде одной клавиши. –

ответ

0

Я нашел решение для своей проблемы. AltGr был обработан Menu компонентом.

Я меняю свое KeyDown событие на KeyUp, так что теперь я ловил AltGr должным образом.

0

Вы уже пробовали это:

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

Если нет, пожалуйста, определить, что вы пробовали уже.

+1

я попытался наиболее типичные решения, такие как: 'e.Key == Key.RightAlt' ' e.KeyboardDevice.Modifiers.HasFlag (ModifierKeys.Alt) '' и т.д. Keyboard.IsKeyDown' – Marek

0

Похоже, этот пост отвечает на ваш вопрос:

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 зарегистрирован как «ALT + LEFT CTRL» от окон

+0

Я знаю, что Alt GR является сочетание выше. Результат: alt: False, ctrl: True, altGr: False. Я понятия не имею, почему 'alt' не срабатывает в моем случае. – Marek

+0

Вы можете проверить, что возвращает e.SystemKey? https://msdn.microsoft.com/en-us/library/system.windows.input.keyeventargs.systemkey(v=vs.110).aspx – hcham1

+0

Не возвращайте ничего. Я нашел решение для своей проблемы. Спасибо за ответ. – Marek

Смежные вопросы