动态循环控件无效

时间:2013-05-02 11:29:30

标签: c# winforms controls

我有一个GUI类。我将frmMain(表单)传递给GUI构造函数。然后我有以下方法来访问子控件:

public void assignEvents(frmMain frm)
{
    foreach (Control ctl in frm.Controls)
    {
        ctl.BackColor = Color.GreenYellow;
        Log.AddData(ctl.Name.ToString() + ".Backcolor = " + ctl.BackColor.ToString(), 3);
    }
}

我在输出(日志)中获得了新的更新颜色,但它对控件没有任何影响,它们仍然是默认颜色。我有什么想法吗?

编辑:

我称之为:

    // GUI.cs
    public class GUI {
         public GUI(frmMain frm){
             assignEvents(frm);
         }
    }

    // frmMain.cs
    public frmMain()
    {
        InitializeComponent();
        gui  = new M.Gui (this);
    }

1 个答案:

答案 0 :(得分:0)

根据您的评论,您需要尝试递归遍历每个ControlCollection以设置BackColor属性。

尝试将代码更改为以下内容:

public GUI(frmMain frm) {
  assignEvents(frm.Controls);
}

public void assignEvents(Control.ControlCollection controls) {
  foreach (Control ctl in controls) {
    ctl.BackColor = Color.GreenYellow;
    assignEvents(ctl.Controls);
  }
}