动态循环遍历控件没有效果

本文关键字:有效果 控件 遍历 循环 动态 | 更新日期: 2023-09-27 18:11:43

我有一个GUI类。我将一个form传递给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);
    }

动态循环遍历控件没有效果

根据你的评论,你需要尝试递归地通过每个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);
  }
}
相关文章: