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);
}
你可能需要重新繪製表格 - 'frm.Invalidate()'在foreach – Sayse 2013-05-02 11:32:32
後,您應該*不*需要調用'的Invalidate()'這樣做後,如果控件編寫正確。我通過創建一個表單,放下一個按鈕,一個標籤和TextBox並添加一個執行上述代碼的按鈕處理程序來測試它。當你點擊按鈕時它工作正常 - 背景顏色變爲GreenYellow。 – 2013-05-02 11:50:51
無需Invalidate(),BackColor屬性設置器已經做到了。在該方法的末尾添加以下行以查看更改:'frm.Show();'Winforms是許多程序員首先了解面向對象的編程的地方。 – 2013-05-02 11:55:27