更改 Windows 窗体的背景颜色

use*_*263 3 c# backcolor

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

MainForm.BackColor = System.Drawing.Color.Black;
Run Code Online (Sandbox Code Playgroud)

这是我在控制台中得到的:

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

Ice*_*ind 5

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

MainForm.BackColor = System.Drawing.Color.Black; // <class name>.<property>
Run Code Online (Sandbox Code Playgroud)

C# 编译器首先要做的就是查找名为 的局部类变量MainForm。由于没有,它然后在您的本地范围之外查找并发现您的Windows.Form类名为MainForm.

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

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

this.BackColor = System.Drawing.Color.Black; // <this instance>.<property>
Run Code Online (Sandbox Code Playgroud)

附带说明一下,关键字this不是必需的。省略它就假定“这个对象”。你也可以这样做:

BackColor = System.Drawing.Color.Black; // <this instance>.<property>
Run Code Online (Sandbox Code Playgroud)

希望这更有意义!