Перечисление элементов управления в форме - PullRequest
2 голосов
/ 11 марта 2011

У меня есть форма с примерно 30 элементами управления, и когда пользователь нажимает кнопку, данные из каждого элемента управления сохраняются в файл. Но мне нужно пройти через каждый элемент управления в форме (что я могу сделать), но он должен быть в порядке. Например, мне нужно начать прямо в верхнем левом углу формы и пройти вниз до самого дна. право на форму.

Так будет работать цикл foreach? I.e.:

foreach(Control control in this.Controls)
{
}

Или не проходит их по порядку?

Ответы [ 2 ]

4 голосов
/ 11 марта 2011

Это вернет элементы управления в порядке их добавления в форму, а не в визуальном порядке.

Если вы настроили TabIndex в том же порядке, в котором вы хотите проанализировать элементы управления, вы можете использовать LINQ для сортировки их по TabIndex.

foreach (Control control in this.Controls.Cast<Control>().OrderBy(c => c.TabIndex))
{
}
2 голосов
/ 11 марта 2011

Вам также нужно перечислить дочерние элементы управления?

Если нет, попробуйте

foreach(Control control in this.Controls.Cast<Control>().OrderBy(o => o.Location.Y).ThenBy(o => o.Location.X)
{
    ...
}

. Это перечислит элементы управления, начиная с верхнего левого угла идвигаясь вправо, затем вниз.

...