当我按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");
}
}
答案 0 :(得分: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))
答案 1 :(得分:1)
WPF不是最适合像Winforms这样的事件驱动方式。最好将MVVM模式与Commands结合使用来分离表示和业务逻辑问题 - 这是WPF最强大的地方。
然后,您可以在View的XAML文件中定义InputBinding
派生的XAML元素,并使用ViewModel中的Command
属性指定要运行的Command
。< / p>
e.g。
<KeyBinding Command="{Binding ShowMessageCommand}" Key="Tab" />
<KeyBinding Command="{Binding ShowMessageCommand}" Modifiers="Shift" Key="Tab" />