2015-05-26 37 views
-1

我想在每次發生另一個類中的事件時將一個字符串傳遞給form1類中的一個方法,然後我想在與Windows窗體關聯的TextBox中多行打印一些文本與form1類。winform中文本框的新行

的事情是我得到在TextBox所有文本在一個單一的線路,並且希望將其打印在新的一行:

private void myEvt_valueChnaged(string s) 
{ 
    textBox1.Invoke(new Action(() => textBox1.Text = s)); 
} 

我試圖用+=,然後我後來得到了文本在行中而不在行下面。 我也嘗試添加+="/n/r" + s並將其印刷成是在文本框中

然後我用+= Environment.NewLine() + s嘗試和得到了錯誤:Environment.NewLine cannot be used like a method .

+5

因爲'Environment.NewLine'屬性不是方法。 – Michael

+1

您不能在單行文本框中顯示多行字符串。微不足道的解決方案是將文本框的Multiline屬性設置爲True。 –

回答

0

「\ n」是在C#中的新線不夠好。 String newline =「\ n」 textBox1.Invoke(new Action((=)textBox1.Text = newline + s));

+0

嗨,它沒有解決問題,新文本替換舊文本在同一行。 – odedidush

0

你應該TextBox控件的多行屬性設置爲,然後就稱之爲:

textBox1.Invoke(new Action(() => textBox1.Text = String.Concat(textBox1.Text, Environment.NewLine, s))); 
如果要追加一個新行的文本和維護已經存在的文本

。否則,你可以用它來把簡單的文本,在新線:

textBox1.Invoke(new Action(() => textBox1.Text = String.Concat(Environment.NewLine, s))); 

注意Environment.NewLine是一個屬性不是方法。

+0

第一條命令的結果是以新行替換舊行。第二個命令的結果是在新行上打印新文本,但是在每次迭代時將文本作爲迭代次數FE:在第一次迭代時 - 在第二次迭代時打印文本 - 將文本打印兩次.. 。並沒有解決問題 – odedidush

+0

第一個命令不會替換舊的命令行,而是將新的文本添加到文本框內的新行中。它相當於:'textBox1.Invoke(new Action(()=> textBox1.Text + = Environment.NewLine + s));'。您的錯誤與您應將Multiline設置爲true並且不使用Environment.NewLine()作爲方法的事實相關。 – Sara

+0

我明白我的原始錯誤。我不明白這些解決方案如何解決它,因爲兩者:textBox1.Invoke(新行動(()=> textBox1.Text = String.Concat(Environment.NewLine,s))); ,textBox1.Invoke(new Action(()=> textBox1.Text + = Environment.NewLine + s));正在添加相關文本 - s,作爲迭代次數。 FE:第一次迭代print:hello,第二次迭代print:hello(新行)hello,第三次迭代:hello(新行)hello(新行)hello等... – odedidush