Перебор всех control в winforms

252
09 декабря 2016, 08:46

Мне в цикле надо перебрать абсолютно все control'ы в форме (в том числе и их дети). С пом. this.controls получаются ток дети именно формы, а мне надо что бы в массиве были все контролы в форме, как это сделать?

Answer 1

Используйте рекурсию.
Выполнить действие над каждым контролом:

public static void ForAllControls(this Control parent, Action<Control> action)
{
    foreach (Control c in parent.Controls) {
        action(c);
        ForAllControls(c, action);
    }
}

Получить все контролы указанного типа:

public static IEnumerable<Control> GetAllControls(this Control control, Type type)
{
    var controls = control.Controls.Cast<Control>().ToArray();
    return controls.SelectMany(ctrl => GetAllControls(ctrl, type))
                          .Concat(controls)
                          .Where(c => c.GetType() == type);
}
READ ALSO
След от кнопки(полоса за кнопкой)

След от кнопки(полоса за кнопкой)

Друзья, написал программу "Гонки кнопок", подскажите, что сделать, чтобы за каждой кнопкой шел след(линия):

263
mimekit IMAP - Proxy C#

mimekit IMAP - Proxy C#

Доброго времени суток, я использую библиотеку mimekit, для работы с IMAPНо переискав весь интернет, я ничего толком и не нашел

1275
ASP.NET: серверные элементы управления (с префиксом ASP) обрабатываются на сервере через C#, VB или на клиенте, через JS?

ASP.NET: серверные элементы управления (с префиксом ASP) обрабатываются на сервере через C#, VB или на клиенте, через JS?

Допустим, имеется кнопка (не submit, а обычная кнопка), с префиксом asp (asp:button) и атрибутом runat = server

360
Распараллеливание списка

Распараллеливание списка

Добрый деньУ меня возникла следующая задача: я получаю список строк, после этого создаю экземпляр класса и вызываю в нём метод

369