Как я могу получить все средства управления от Формы Включая средства управления в каком-либо контейнере?

Никто не упомянул Умный:: Комментарии ? Это не всегда, что Вы хотите, но хороший при необходимости в большем количестве питания к комментариям.

5
задан FightingFights 30 October 2017 в 16:44
поделиться

2 ответа

Простейшим вариантом может быть каскадирование:

public static void SetEnabled(Control control, bool enabled) {
    control.Enabled = enabled;
    foreach(Control child in control.Controls) {
        SetEnabled(child, enabled);
    }
}

или аналогичное; вы, конечно, можете передать делегата, чтобы сделать его достаточно универсальным:

public static void ApplyAll(Control control, Action<Control> action) {
    action(control);
    foreach(Control child in control.Controls) {
        ApplyAll(child, action);
    }
}

затем такие вещи, как:

ApplyAll(this, c => c.Validate());

ApplyAll(this, c => {c.Enabled = false; });
22
ответ дан 18 December 2019 в 05:49
поделиться

Также попробуйте:

public List<Control> getControls(string what, Control where)
    {
        List<Control> controles = new List<Control>();
        foreach (Control c in where.Controls)
        {
            if (c.GetType().Name == what)
            {
                controles.Add(c);
            }
            else if (c.Controls.Count > 0)
            {
                controles.AddRange(getControls(what, c));
            }
        }
        return controles;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        var c = getControls("Button", this);

    }
3
ответ дан 18 December 2019 в 05:49
поделиться
Другие вопросы по тегам:

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