给定一个具有子控件的控件。如何在没有循环遍历所有控件的情况下,将焦点放在具有最低tabindex的子控件上?
答案 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;
}
}