2017-12-02 54 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

相关问题