如何在wpf c#中按TAB键时触发事件

本文关键字:事件 TAB 中按 wpf | 更新日期: 2023-09-27 18:14:41

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

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

如何在wpf c#中按TAB键时触发事件

您可以执行如下检查

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))

WPF不适合用于事件驱动的方式,比如Winforms。最好将MVVM模式与命令结合使用,以分离表示和业务逻辑关注点——这是WPF最强大的地方。

当你这样做的时候,你可以在你的视图的XAML文件中定义InputBinding派生的XAML元素,并指定一个Command运行使用Command属性,这是在你的ViewModel

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