2011-01-05 40 views
0

我正試圖將程序的狀態寫入用戶。但是我的方法不起作用。 statusBox是一個文本框窗口。C# - 寫入多行文本框

public static void writetoStatus(string text) 
     { 
      TextBox statusBox = new TextBox(); 
      statusBox.Text = text; 
     } 

請幫忙!

+0

看起來沒事就必須有像文本變量或錯誤的文本名稱的TECT一些其他的問題嗎? – 2011-01-05 18:46:17

+0

我沒有看到你的方法有什麼問題,但它是靜態的,這讓我想看看它的代碼。其他問題回答:這是否編譯?這是ASP.NET還是Windows窗體? – Kendrick 2011-01-05 18:47:53

+0

其實我不明白你想做什麼?正試圖創建多行文本框(正如我從標題理解)或嘗試更新任何文本框的文本? – 2011-01-05 18:48:05

回答

5

您無法使用靜態方法訪問實例變量。我想不出一種statusBox不會是實例成員的方式。嘗試讓你的方法是非靜態的,它應該沒問題。

+0

好趕上+1 ... – 2011-01-05 18:49:50

+0

非常感謝!我刪除了創建新文本框的行。擺脫了我的方法中的靜態,現在它的工作。比我想象的更簡單! :) – user377419 2011-01-05 18:58:17

0

正如前面的回答中所述,您的方法需要是靜態的才能訪問表單上的TextBox

另外還有一個事實,即您將狀態置於新的TextBox而不是表單上的狀態。

如果您創建了一個表單並在其上放置了一個TextBox,那麼TextBox已經有一個名稱,您可以從代碼隱藏文件訪問它。默認情況下,我認爲它會是Textbox1或其他數字。當然,您可以在設計器文件或Visual Studio中的表單編輯器GUI中更改此名稱。

因此,可以說,您將現有的TextBox的名稱更改爲statusBox。現在,你的方法只需是這樣的:

void WriteToStatus(string status) 
{ 
    statusBox.Text = status; 
} 
0

好吧,我知道你正在創建文本框的靜態方法中一個新的實例。該文本框實例無處不在,一旦執行了靜態方法,它就會被銷燬。

您可以有:

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);