代码之家  ›  专栏  ›  技术社区  ›  user

C#-同时修改所有窗体控件的最佳方法?

c#
  •  0
  • user  · 技术社区  · 14 年前

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

    4 回复  |  直到 14 年前
        1
  •  2
  •   Will Marcouiller    14 年前
    foreach (Control c in MyForm.Controls) {
        c.BackColor = Colors.Black;
        c.ForeColor = Colors.White;
    }
    
        2
  •  4
  •   FrustratedWithFormsDesigner    14 年前

    你可以在控件之间循环,我相信所有控件都有 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)
        }
    
    }
    
        3
  •  0
  •   Mario    14 年前

    这真的取决于你想做什么。最优雅的方法可能是在设计时定义的链接应用程序设置,然后可以在运行时进行更改。

        4
  •  0
  •   Lonli-Lokli    14 年前
        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);
            }
        }