Вы можете создать такой метод:
public static Control GetControl(Control.ControlCollection controlCollection, Predicate<Control> match)
{
foreach (Control control in controlCollection)
{
if (match(control))
{
return control;
}
if (control.Controls.Count > 0)
{
Control result = GetControl(control.Controls, match);
if (result != null)
{
return result;
}
}
}
return null;
}
... используется следующим образом:
Control control = GetControl(this.Controls, ctl => ctl.TabIndex == 9);
Обратите внимание, что TabIndex
- сложный случай, поскольку он начинается с 0
в каждом контейнере, поэтому может быть несколько элементов управления в одной и той же форме, имеющих одинаковое значение TabIndex
.
В любом случае, описанный выше метод можно использовать для проверки практически любого свойства элементов управления:
Control control = GetControl(this.Controls, ctl => ctl.Text == "Some text");