首先,你一般不應訪問控制,如從你的程序類文本框。相反,您應該在Form1.cs文件中執行此操作。 Form1是一個類,它爲textBox2提供了一個受保護的字段,因此它在類之外不可訪問。如果你想改變Program.cs中的值,你應該添加一個公共函數給Form1來設置textBos2.Text的值。
其次,你似乎只是輸入類名而不是實例的名稱。不同之處在於Textbox是一個類,textBox1和textBox2是實例。 Textbox.Text無效,因爲您需要指定您嘗試獲取或設置文本的WHICH文本框。這與Form1.textBox2相同。 Form1是一個類,可以有很多。您必須指定表單實例的名稱才能訪問其公共成員。
UPDATE:
我只是給你一個類和一個類的實例,靜態字段和非靜態字段之間的區別的簡要說明。請原諒任何囉嗦。
當您創建一個新的Windows窗體應用程序時,Visual Studio將爲您創建一個Form1類型。 Form1是一個類。然後程序使用Form1創建一個表單實例並顯示它。該代碼看起來像這樣:
Form1 form = new Form1;
在這種情況下,窗體是實例。您可以創建Form1的多個實例。每個實例都有您創建的textBox2,它是Textbox類的一個實例。就像你必須做textBox2.Text來獲取你在窗體上創建的第二個文本框的文本一樣,你必須指定form.textBox2(或者你的公共方法來設置textBox2.Text的值)。 Form1,即使它是一個類之後有一個數字,form是實例。它們與Textbox和textBox2具有相同的關係。
非靜態成員可以被實例訪問。靜態成員可以被課堂使用。靜態成員除非通過實例才能訪問非靜態成員。
我在Form1中有一個公共靜態函數,它試圖通過執行'textBox2.Text =「任何...」來修改textBox2,並且出現錯誤。 –
@SamH由於靜態函數是類(Form1)的成員,並且非靜態字段textBox2是實例的成員,所以無法從靜態函數執行此操作。如果我有兩個Form1像你有兩個文本框一樣,Form1.ChangeText將不知道要更改哪個文本框2。這有任何意義嗎? – smelch
如果我將靜態函數更改爲非靜態函數,則會出現另一個錯誤,它似乎正在出現一圈錯誤哈哈。 –