更改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)
MainForm.BackColor = System.Drawing.Color.Black; // <class name>.<property>
C#编译器首先要做的是查找一个名为MainForm
的局部类变量。由于没有,所以它在本地范围之外查找,并找到了名为MainForm
的Windows.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#的书。对象在初始化之前不能使用。这是一个相当初级的概念。