如果未发布Tab键,请保持Tab键

时间:2017-11-28 17:56:23

标签: c# .net wpf

目前我在 PreviewKeyDown 上进行标记,使用以下内容:

var focusedElement = Keyboard.FocusedElement as FrameworkElement;
            var direction = GetDirection();
            focusedElement?.MoveFocus(new TraversalRequest(direction));
 static FocusNavigationDirection GetDirection()
        {
            return (Keyboard.Modifiers.HasFlag(ModifierKeys.Shift))
                ? FocusNavigationDirection.Previous
                : FocusNavigationDirection.Next;
        }

这个效果很好,每次用户按Tab键时,我们都会Tab。 然而,它缺少一个功能:如果用户没有发布Tab键,我希望它继续标记。示例在Excel中按住Tab键,然后按住

我想知道是否有推荐/标准/开箱即用的方式来实现这种行为?

或者我是否必须自己实现:我计划使用DispatcherTimer执行此操作,然后每次选中Tab键,然后在KeyUp上停止计时器。

1 个答案:

答案 0 :(得分:2)

只要按住键,就会重复引发KeyDown事件。

在最初的keydown上,e.IsRepeatfalse。此后,只要密钥持续按下,e.IsRepeat将为true

public void Whatever_KeyDown(object sender, KeyEventArgs e)
{
}