如何选择具有最低tabindex的控件?

时间:2009-10-02 00:25:48

标签: winforms

给定一个具有子控件的控件。如何在没有循环遍历所有控件的情况下,将焦点放在具有最低tabindex的子控件上?

2 个答案:

答案 0 :(得分:1)

我将通过循环控制来完成它,没有任何问题。这可能是最简单的解决方案。

答案 1 :(得分:1)

此解决方案没有您想要的性能,但它是“简单的方法”。可能有一种我更无知的“更容易的方式”。

var firstControl = this.AllChildControls().OrderBy(m => m.TabIndex).First();
firstControl.Focus();

代码段取决于以下扩展方法。

/// <summary>
/// Preforms a preorder iteration through all children of this control, recursively.
/// </summary>
/// <returns></returns>
public static IEnumerable<Control> AllChildControls(this Control control)
{
   foreach (Control child in control.Controls)
   {
        yield return child;
        foreach (var grandchild in child.AllChildControls())
            yield return grandchild;
    }
}