目前我在 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上停止计时器。
答案 0 :(得分:2)
只要按住键,就会重复引发KeyDown
事件。
在最初的keydown上,e.IsRepeat
为false
。此后,只要密钥持续按下,e.IsRepeat
将为true
。
public void Whatever_KeyDown(object sender, KeyEventArgs e)
{
}