【问题标题】:WPF and C# ComboBox Next FocusWPF 和 C# ComboBox 下一个焦点
【发布时间】:2012-03-15 03:54:18
【问题描述】:

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

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

CurrentTextBox 是一个控件。

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

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

【问题讨论】:

  • 您是否检查过该控件是否可以获得焦点?并且可以选择/可以标签到?
  • 是的,如果我在真实键盘上按 Tab 键,它就可以正常工作。

标签: c# wpf combobox focus next


【解决方案1】:

如果您愿意,可以使用我的EnterKeyTraversal attached property 代码。将其添加到 WPF 窗口的顶级容器中,里面的所有内容都会将 enter 视为选项卡:

<ComboBox my:EnterKeyTraversal.IsEnabled="True">
...
</ComboBox>

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      相关资源
      最近更新 更多