wpf - 在wpf中,如何获得tab顺序中的下一个控件

标签 wpf tab-ordering

我知道怎么做 将焦点移至 Tab 键顺序中的下一个控件,但我实际上并不想更改焦点...我只想 获取 Tab 键顺序中的下一个控件(也许也可以获取上一个、第一个和最后一个控件。)那么... howyadodat?

最佳答案

PredictFocus(FocusNavigationDirection.Next)不像@Cameron 所说的那样工作。我基于@Randolpho 帖子的包装器代码现在运行良好。

我尝试了几种模式,最后得出结论我必须确保container实际上是e的 parent 之一以免出现意外结果。

/// <summary>
/// Get next tab order element.
/// </summary>
/// <param name="e">The element to get next tab order</param>
/// <param name="container">The container element owning 'e'. Make sure this is a container of 'e'.</param>
/// <param name="goDownOnly">True if search only itself and inside of 'container'; otherwise false.
/// If true and next tab order element is outside of 'container', result in null.</param>
/// <returns>Next tab order element or null if not found</returns>
public DependencyObject GetNextTab(DependencyObject e, DependencyObject container, bool goDownOnly)
{
    var navigation = typeof(FrameworkElement)
        .GetProperty("KeyboardNavigation", BindingFlags.NonPublic | BindingFlags.Static)
        .GetValue(null);

    var method = navigation
        .GetType()
        .GetMethod("GetNextTab", BindingFlags.NonPublic | BindingFlags.Instance);

    return method.Invoke(navigation, new object[] { e, container, goDownOnly }) as DependencyObject;
}

前任。)
var nextElement = GetNextTab(textbox1, window, false);

关于wpf - 在wpf中,如何获得tab顺序中的下一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5756448/

相关文章:

reactjs - react 组件中的选项卡顺序?

qt - 如何从选项卡排序列表中排除小部件?

c# - WPF 中的高级/复杂快捷方式

c# - ViewModels和UI

html - 使用 Tab 键时如何更改文本字段选择顺序

grails - Grails标签顺序

javascript - 在 html 控件中创建闭环选项卡顺序

c# - 如何通过局域网在两个不同的 WPF 应用程序之间进行通信?

c# - 从 ListBoxItem 获取 ListBox 对象

c# - 通知 WPF DataGrid 更改