У меня есть класс GUI. Я передаю frmMain (form) в GUI contructor. Тогда у меня есть следующий метод доступа дочерних элементов управления:Динамически циклические элементы управления не имеют эффекта
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);
}
}
я получаю новый обновленный цвет в выходной (журнал), но это не имеет никакого влияния на элементы управления, и они все еще находятся в цвете по умолчанию. Любые идеи, что я делаю неправильно?
EDIT:
Я называю это так:
// GUI.cs
public class GUI {
public GUI(frmMain frm){
assignEvents(frm);
}
}
// frmMain.cs
public frmMain()
{
InitializeComponent();
gui = new M.Gui (this);
}
вам, возможно, придется перерисовывать форму - 'frm.Invalidate()' после Еогеаспа – Sayse
Вы должны * не * должны называть 'Invalidate()' после этого, если элементы управления написаны правильно. Я протестировал это, создав форму, нажав на нее кнопку, ярлык и TextBox и добавив обработчик кнопки, который делает код выше. Он отлично работает, когда U нажимает кнопку - цвета фона меняются на GreenYellow. –
Нет необходимости в Invalidate(), средство set свойства BackColor уже делает это. Добавьте эту строку в конце метода, чтобы увидеть изменения: 'frm.Show();' Winforms - это то, где многие программисты впервые узнают об объектно-ориентированном программировании. –