Изменить цвет фона всех кнопок по формуле

Также обязательно верните с ожидаемым возвращаемым значением. Если вы используете exit, когда будете сталкиваться с выходом, он выйдет из вашей базовой оболочки, так как источник не создает другой процесс (экземпляр).

0
задан Rand Random 27 February 2019 в 16:29
поделиться

1 ответ

Вам нужен рекурсивный поиск вашего контроля внутри всех элементов управления формы. Посмотрите , который принял ответ , который реализует очень хороший рекурсивный подход.

Делая это:

frm.Controls.OfType<Button>()

вы ищете только в первом слое элементов управления ваших форм, так что если у вас есть кнопка внутри панели или другого элемента (99,999999% ситуаций ) ваш foreach не может его найти.

Принятие принятого ответа на ваш вопрос:

public IEnumerable<Control> GetAll(this Control control,Type type)
{
    var controls = control.Controls.Cast<Control>();

    return controls.SelectMany(ctrl => ctrl.GetAll(type))
                              .Concat(controls)
                              .Where(c => c.GetType() == type);
}

[...]

foreach (Button btn in frm.GetAll(typeof(Button)))
    {
        btn.BackColor = btnColor;
    }

L-

0
ответ дан Legion 27 February 2019 в 16:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: