我正試圖將程序的狀態寫入用戶。但是我的方法不起作用。 statusBox是一個文本框窗口。C# - 寫入多行文本框
public static void writetoStatus(string text)
{
TextBox statusBox = new TextBox();
statusBox.Text = text;
}
請幫忙!
我正試圖將程序的狀態寫入用戶。但是我的方法不起作用。 statusBox是一個文本框窗口。C# - 寫入多行文本框
public static void writetoStatus(string text)
{
TextBox statusBox = new TextBox();
statusBox.Text = text;
}
請幫忙!
您無法使用靜態方法訪問實例變量。我想不出一種statusBox
不會是實例成員的方式。嘗試讓你的方法是非靜態的,它應該沒問題。
好趕上+1 ... – 2011-01-05 18:49:50
非常感謝!我刪除了創建新文本框的行。擺脫了我的方法中的靜態,現在它的工作。比我想象的更簡單! :) – user377419 2011-01-05 18:58:17
正如前面的回答中所述,您的方法需要是靜態的才能訪問表單上的TextBox
。
另外還有一個事實,即您將狀態置於新的TextBox
而不是表單上的狀態。
如果您創建了一個表單並在其上放置了一個TextBox
,那麼TextBox
已經有一個名稱,您可以從代碼隱藏文件訪問它。默認情況下,我認爲它會是Textbox1
或其他數字。當然,您可以在設計器文件或Visual Studio中的表單編輯器GUI中更改此名稱。
因此,可以說,您將現有的TextBox
的名稱更改爲statusBox
。現在,你的方法只需是這樣的:
void WriteToStatus(string status)
{
statusBox.Text = status;
}
好吧,我知道你正在創建文本框的靜態方法中一個新的實例。該文本框實例無處不在,一旦執行了靜態方法,它就會被銷燬。
您可以有:
public static void writetoStatus(TextBox tb, string text)
{
tb.Text = text;
}
// and then later use it like:
writetoStatus(statusBox, text);
或者:
public static void writetoStatus(Form frm, string text)
{
TextBox tb = new TextBox();
tb.Text = text;
frm.Controls.Add(tb);
}
// and then later use it like:
writetoStatus(myForm, text);
看起來沒事就必須有像文本變量或錯誤的文本名稱的TECT一些其他的問題嗎? – 2011-01-05 18:46:17
我沒有看到你的方法有什麼問題,但它是靜態的,這讓我想看看它的代碼。其他問題回答:這是否編譯?這是ASP.NET還是Windows窗體? – Kendrick 2011-01-05 18:47:53
其實我不明白你想做什麼?正試圖創建多行文本框(正如我從標題理解)或嘗試更新任何文本框的文本? – 2011-01-05 18:48:05