[英]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
的局部类变量。 由于没有任何内容,因此它会在您的本地范围之外,并找到名为MainForm
的Windows.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.