3

我有一个 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);
    }
4

1 回答 1

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);
  }
}
于 2013-05-03T13:54:23.313 回答