将 Enter 解释为带有选择的 Tab

Posted

技术标签:

【中文标题】将 Enter 解释为带有选择的 Tab【英文标题】:Interpret Enter as Tab with selection 【发布时间】:2018-09-23 03:46:56 【问题描述】:

我在 Enter 按键上使用此代码将焦点移到下一个,就像数据网格中的 Tab 一样。

uiElement.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));

在任何行的末尾按下回车键会将焦点移动到下一行,但选择会保持在原来的位置。另一方面,使用 Tab 使选择具有焦点。

有没有办法通过一些调整来移动选择?

Matt Hamilton 的 answer 很棒,但没有做选择。

【问题讨论】:

【参考方案1】:

您可以做的不是尝试以编程方式切换焦点,而是模拟每次在DataGrid 内按下回车键时按下 Tab 键。然后它看起来像这样:

private void DataGrid_PreviewKeyDown(object sender, KeyEventArgs e)

    if (e.Key == Key.Enter)
    
        var dataGrid = (DataGrid)sender;
        var keyEventArgs = new KeyEventArgs(Keyboard.PrimaryDevice, PresentationSource.FromVisual(dataGrid), 0, Key.Tab)
        
            RoutedEvent = Keyboard.KeyDownEvent,
        ;

        dataGrid.RaiseEvent(keyEventArgs);
        e.Handled = true;
    

【讨论】:

是的,为什么不呢?谢谢。绝对适合我的情况。

以上是关于将 Enter 解释为带有选择的 Tab的主要内容,如果未能解决你的问题,请参考以下文章

将 ENTER 键重新定义为 TAB 键

Tab Control 在 Enter 键上绘制

el-select 搜索功能 按tab键默认选第一列

Select2 4.0.0 AJAX - 使用 Tab 选择突出显示的选项

Select2 4.0.0 AJAX - 使用Tab选择突出显示的选项

使用vscode,新建.vue文件,tab(enter)自动生成vue代码模板