更改Windows窗体的背景色

本文关键字:背景色 窗体 Windows 更改 | 更新日期: 2023-09-27 18:00:00

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

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) 

更改Windows窗体的背景色

静态类是不能实例化的类。静态类具有静态方法或静态属性(或两者兼有)。当你使用这样的线路时:
MainForm.BackColor = System.Drawing.Color.Black; // <class name>.<property>

C#编译器首先要做的是查找一个名为MainForm的局部类变量。由于没有,所以它在本地范围之外查找,并找到了名为MainFormWindows.Form类。

然后,它查看类MainForm是否具有名为BackColor的静态属性。然后编译器说"哦,看,有一个名为BackColor的属性,但它不是静态的",这时编译器抱怨并向您抛出了您遇到的错误。

通过将其更改为this.BackColor,编译器知道您想要设置MainForm的THIS INSTANCE的背景色,即this或默认情况下的form1:

this.BackColor = System.Drawing.Color.Black; // <this instance>.<property>

另外,不需要关键字this。省略它假定为"此对象"。你也可以这样做:

BackColor = System.Drawing.Color.Black; // <this instance>.<property>

希望这更有意义!

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

MainForm form = new MainForm();

然后使用

form.BackColor = Color.Black;

添加到你的问题的评论中,粘贴

 this.BackColor = Color.Black;

在窗体的方法内部,然后只调用该方法。像这样。

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

这将允许您将颜色传递给方法,并相应地更改BackColor。

希望这能有所帮助。我建议你读一本关于C#的书。对象在初始化之前不能使用。这是一个相当初级的概念。