WPF 和 C# ComboBox 下一个焦点

问题描述 投票:0回答:2

我正在使用 WPF 和 C#。 我有一个带有按钮的 OnScreenKeyboard 的应用程序。 当我按下 OnScreenKeyboard 中的选项卡按钮时,它会执行以下操作:

if (IsEnterEnabled){
  CurrentTextBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}

CurrentTextBox 是一个控件。

当文本框获得焦点时,它可以正常工作并移动到下一个焦点,即使下一个焦点是组合框,但如果当前焦点在可编辑的组合框中,它不会移动到下一个焦点元素。

如果组合框不可编辑,它可以工作。

c# wpf combobox focus
2个回答
0
投票

由于 ComboBox 内部有一个当前具有焦点的 TextBox,因此告诉 ComboBox 下一步移动只会移动到 TextBox。相反,获取内部 TextBox 并继续下一步:

        var s1 = FocusManager.GetFocusedElement(this);
        if (s1 is FrameworkElement)
        {
            ((FrameworkElement)s1).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
        }

0
投票

如果您愿意,可以使用我的EnterKeyTraversal 附加属性 代码。将它添加到 WPF 窗口的顶级容器中,里面的所有内容都会将 enter 视为 tab:

<ComboBox my:EnterKeyTraversal.IsEnabled="True">
...
</ComboBox>
© www.soinside.com 2019 - 2024. All rights reserved.