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