2017-12-02 129 views
-1

我試圖改變應用程序中所有表單的控件的背景顏色,我創建了一個類,然後創建了一個方法。這是我的代碼:我如何從另一個類改變背景顏色達到表單的控件

foreach (Control item in Controls) 
{ 
    if (item is ComboBox) 
    { 

    } 
    else 
    { 
     item.BackColor = Color.White; 
    } 
} 
BackColor = Color.White; 

的問題是,與控制和背景色屬性的作品,而不在形式,而是一個類中的問題foreach語句,他們不工作。我怎樣才能得到窗體的所有控件,並在這樣的代碼中從類中更改它們的BackColors?或者你有任何建議作爲解決方案?

+1

你總是可以通過表單參考類方法改變顏色。 – Steve

+1

此問題至少有10,000個重複項。 –

+0

我知道它有很多副本,但我至少搜索了一個小時,但是我無法在我的代碼中使用它們。我無法找到任何有關傳遞表單參考的信息,所以我問了這個問題。感謝史蒂夫,現在我知道了。 – HeroOfSkies

回答

3

我想你的類有一個名爲ChangeBackgroundColor的方法,那麼你可以簡單地將表單引用傳遞給這個方法作爲參數,所以你可以從任何你想要改變你的控件的背景顏色的方式調用這個方法。

public class MyClass 
{ 
    public void ChangeBackgroundColor(Form f) 
    { 
     foreach (Control item in f.Controls) 
     { 

      if (item is ComboBox) 
      { 

      } 
      else 
      { 
       item.BackColor = Color.White; 
      } 
     } 
     f.BackColor = Color.White; 
    } 
} 

然後裏面的你的形式之一調用這個類的方法

public class Form1:Form 
{ 
    public Form1() 
    { 
     InitializeComponents(); 
     MyClass c = new MyClass(); 
     c.ChangeBackgroundColor(this); 
    } 
} 
+0

@HeroOfSkies在未來,您應該做一個簡單的谷歌搜索或向我們展示您嘗試過從另一個類或父類調用類方法的過程。謝謝 – MethodMan

+0

我已經在問題下面的評論中回答了有關谷歌搜索的問題,但對於第二部分,我會嘗試一下感謝您的建議 – HeroOfSkies