更改Windows窗体的BackColor

时间:2014-04-23 23:41:04

标签: c# backcolor

为什么我不能以这种方式更改表单的背景颜色?

MainForm.BackColor = System.Drawing.Color.Black;

这是我在控制台中获得的内容:

An object reference is required for the non-static field, method, or property 'System.Windows.Forms.Control.BackColor.get' (CS0120) 

2 个答案:

答案 0 :(得分:3)

您正在使用MainForm,就像它是一个静态类一样。要么使表单静态,要么创建它的实例。

MainForm form = new MainForm();

然后使用

form.BackColor = Color.Black;

添加到您的问题的评论,坚持

 this.BackColor = Color.Black;

在表单的方法内部,只需调用该方法即可。像这样。

void changeBackColor(Color color)
{
    this.BackColor = color;
}

这样可以将颜色传递给方法并相应地更改BackColor。

希望这会有所帮助。我建议你读一本关于C#的书。初始化之前无法使用对象。这是一个非常基本的概念。

答案 1 :(得分:2)

Static Classes是无法实例化的类。静态类具有静态方法或静态属性(或两者)。当您使用这样的行时:

MainForm.BackColor = System.Drawing.Color.Black; // <class name>.<property>

C#编译器首先要做的是查找名为MainForm的本地类变量。由于没有,因此它会在您的本地范围之外查找并找到名为Windows.Form的{​​{1}}类。

然后查看类MainForm是否具有名为MainForm的静态属性。编译器然后说“哦,看,有一个名为BackColor的属性,但它不是静态的”,这是编译器抱怨并把你遇到的错误扔给你的。

通过将其更改为BackColor,编译器知道您要设置MainForm的此实例的背景颜色,this.BackColor或默认为this

form1

作为旁注,不需要关键字this.BackColor = System.Drawing.Color.Black; // <this instance>.<property> 。省略它假设“这个对象”。你也可以这样做:

this

希望这更有意义!