C# - 一次修改所有表单控件的最佳方法?

时间:2010-11-25 16:21:05

标签: c#

动态修改由按钮,工具条,面板等组成的WinForm应用程序的每个控件的前景色和背景色的最佳方法是什么?是否有一种简单的方法可以自动循环每个控件,还是必须手动更改每个控件?感谢。

4 个答案:

答案 0 :(得分:4)

您可以遍历控件,我相信所有控件都有一个Controls属性,它是包含控件的列表。

假设功能:

public void ChangeControlsColours(Controls in_c)
{

    foreach (Control c in in_c)
    {
        c.BackColor = Colors.Black;
        c.ForeColor = Colors.White;
        if (c.Controls.length >0 ) //I'm not 100% this line is correct, but I think you get the idea, yes?
            ChangeControlsColours(c.Controls)
    }

}

答案 1 :(得分:2)

foreach (Control c in MyForm.Controls) {
    c.BackColor = Colors.Black;
    c.ForeColor = Colors.White;
}

答案 2 :(得分:0)

这实际上取决于你想要做什么。最优雅的方式可能是您在设计时定义的链接应用程序设置,然后您就可以在运行时更改。

答案 3 :(得分:0)

    private void UpdateInternalControls(Control parent)
    {
        UpdateControl(parent, delegate(Control control)
                                {
                                    control.BackColor = Color.Turquoise;
                                    control.ForeColor = Color.Yellow;
                                });
    }

    private static void UpdateControl(Control c, Action<Control> action)
    {
        action(c);
        foreach (Control child in c.Controls)
        {
            UpdateControl(child, action);
        }
    }