2015-12-20 26 views
0

我製作了一個程序,其中包含很多控件。控件將根據用戶的選擇顯示和隱藏。這意味着在設計時控件相互重疊。現在我想在設計時改變所有控件的前景色和背景色。但我很努力地完成這項任務,因爲所有的控制都相互重疊。所以我決定做一個for循環方法迭代表單中的控件,然後依次檢查每個控件是否有控件。當控件也控制它時,我調用相同的方法並將控件傳遞給它以更改子控件的屬性。像這樣的方法:通過引用控制索引器的方法來更改其屬性

void setColor(ref Control con) 
     { 
      con.BackColor= System.Drawing.Color.Black; 
      con.ForeColor=System.Drawing.Color.Yellow; 
      if (con.Controls.Count > 0) { setColor(ref con); } 
     } 

所以我的表單包括tabControl多tabPages。我遍歷的TabPages,並想通過這種方法,但我成爲錯誤 「索引器可能不被作爲out或ref參數傳遞」我將它傳遞這樣:setColor(ref tabControl1.Controls[i]);

可以請你幫我解決這個問題?

回答

0

我已經解決了這個問題。 我已刪除的方法,在「裁判」,並寫了簡單的類似於下面的方法:

void SetColor(Control con) 
    { 
     con.BackColor = System.Drawing.Color.Black; 
     con.ForeColor = System.Drawing.Color.Yellow; 
     if (con.Controls.Count > 0) 
     { 
      for (int i=0; i<con.Controls.Count;i++) 
      SetColor(con.Controls[i]); 
     } 
    } 

,並呼籲它這樣:setColor(this.Controls[i]);