2014-07-25 5 views
-1

Когда я нажимаю клавишу Tab или shift + tab, отображается сообщение, но я хочу показывать это сообщение только тогда, когда я нажимаю клавишу Tab, а не shift + tab key. Как определить это событие только при нажатии клавиши Tab с использованием события предварительного просмотра в Wpf C#?Как запустить событие, когда клавиша TAB нажата в wpf C#?

private void txtH_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Tab) 
    { 
     MessageBox.Show("Tab"); 
    } 
} 

ответ

1

Вы можете выполнить проверку как

if ((!e.KeyboardDevice.IsKeyDown(Key.LeftShift)) 
    && (!e.KeyboardDevice.IsKeyDown(Key.RightShift)) 
    && e.KeyboardDevice.IsKeyDown(Key.Tab)) 

Или вы можете сделать чек как

if (!(e.KeyboardDevice.Modifiers == ModifierKeys.Shift) 
    && e.KeyboardDevice.IsKeyDown(Key.Tab)) 
+0

Спасибо, он может работать хорошо. : D –

+0

Я думаю, что что-то не так с вашими скобками в первом if-statement. У вас есть 7 открывающих скобок, но только 6 закрывающих скобок. – Nzall

+0

Удален дополнительный кронштейн Nate – TYY

1

WPF не лучше всего использовать в качестве событийного моды, как Winforms. Лучше всего использовать шаблон MVVM в сочетании с командами для выделения проблем с презентацией и бизнес-логикой - вот где WPF является самым мощным.

При этом вы можете определить InputBinding производные элементы XAML в ваших XAML файлы для вашего просмотра и указать Command для запуска с помощью атрибута Command, который находится в вашем ViewModel.

например.

<KeyBinding Command="{Binding ShowMessageCommand}" Key="Tab" /> 
<KeyBinding Command="{Binding ShowMessageCommand}" Modifiers="Shift" Key="Tab" /> 
Смежные вопросы