2014-07-25 59 views
-1

当我按Tab或Shift + Tab键显示消息,但我只想当我按Tab键而不是Shift + Tab键时显示此消息。 如何定义这个事件,只有当我按Tab键使用Wpf C#中的previewkeydown事件?如何在wpf c#中按Tab键时触发一个事件?

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语句中的括号有问题。你有7个开头括号,但只有6个右括号。 – Nzall

+0

删除了额外的支架Nate – TYY

1

WPF的检查以事件驱动的方式类似的WinForms不是最好的使用。将MVVM模式与命令结合使用可以分离表示和业务逻辑问题 - 这是WPF最强大的地方。

这样做时,您可以在XAML文件中为您的视图定义InputBinding导出的XAML元素,并指定Command使用ViewModel中的Command属性运行。

例如

<KeyBinding Command="{Binding ShowMessageCommand}" Key="Tab" /> 
<KeyBinding Command="{Binding ShowMessageCommand}" Modifiers="Shift" Key="Tab" />