[英]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.