我正在使用 WPF 和 C#。 我有一个带有按钮的 OnScreenKeyboard 的应用程序。 当我按下 OnScreenKeyboard 中的选项卡按钮时,它会执行以下操作:
if (IsEnterEnabled){
CurrentTextBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
CurrentTextBox 是一个控件。
当文本框获得焦点时,它可以正常工作并移动到下一个焦点,即使下一个焦点是组合框,但如果当前焦点在可编辑的组合框中,它不会移动到下一个焦点元素。
如果组合框不可编辑,它可以工作。
由于 ComboBox 内部有一个当前具有焦点的 TextBox,因此告诉 ComboBox 下一步移动只会移动到 TextBox。相反,获取内部 TextBox 并继续下一步:
var s1 = FocusManager.GetFocusedElement(this);
if (s1 is FrameworkElement)
{
((FrameworkElement)s1).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
如果您愿意,可以使用我的EnterKeyTraversal 附加属性 代码。将它添加到 WPF 窗口的顶级容器中,里面的所有内容都会将 enter 视为 tab:
<ComboBox my:EnterKeyTraversal.IsEnabled="True">
...
</ComboBox>