繁体   English   中英

更改Windows窗体的背景色

[英]Changing the BackColor of a Windows Form

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

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) 

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

MainForm form = new MainForm();

然后使用

form.BackColor = Color.Black;

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

 this.BackColor = Color.Black;

在您的表单方法中,然后调用该方法。 像这样

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

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

希望这可以帮助。 我建议您读一本有关C#的书。 在初始化之前不能使用对象。 这是一个非常基本的概念。

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

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

C#编译器首先要做的是寻找一个称为MainForm的局部类变量。 由于没有任何内容,因此它会在您的本地范围之外,并找到名为MainFormWindows.Form类。

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

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

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

另外,关键字this并非必需。 忽略它会假定“此对象”。 您也可以这样做:

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

希望这更有意义!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM