簡體   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