更改Windows窗体的BackColor

3
为什么我不能用这种方式改变窗体的背景颜色?
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) 

4
请使用 this.BackColor 或者仅使用 BackColor。这是一条关于如何访问背景颜色的指示。 - Icemanind
可能是重复的问题.. https://dev59.com/hHE85IYBdhLWcg3wNgrk - BRBT
谢谢,@icemanind :) 你真是太棒了,帮了我大忙....它起作用了 :) - user3541263
this.BackColor = System.Drawing.Color.Black; 这段代码的意思是将背景颜色设置为黑色。 - user3541263
试试这个,希望能对你有所帮助。解决方案图片 - Abhishek Anand
2个回答

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

Static Classes

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

C#编译器首先查找名为“MainForm”的局部类变量。由于没有找到,它接着查找你的名为“MainForm”的Windows.Form类,然后查看该类是否有名为“BackColor”的静态属性。编译器发现“BackColor”属性不是静态属性时,就会抱怨并显示错误信息。将代码更改为“this.BackColor”后,编译器会知道你想要设置此实例的背景颜色,即“this”或默认情况下的“form1”。
this.BackColor = System.Drawing.Color.Black; // <this instance>.<property>

作为一个附注,关键字this并非必需。省略它会默认为“该对象”。您也可以这样做:

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

希望这样更加清晰明了!

4

您正在使用MainForm,就好像它是一个静态类。请将您的表单设置为静态或创建一个实例。

MainForm form = new MainForm();

然后使用。
form.BackColor = Color.Black;

除了回答您的问题,我还需要补充一点,stick
 this.BackColor = Color.Black;

在您的表单方法内部,只需调用该方法即可。就像这样。
void changeBackColor(Color color)
{
    this.BackColor = color;
}

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

希望对您有所帮助。我建议阅读一本关于C#的书。对象在初始化之前无法使用,这是一个相当基础的概念。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接