2015-05-26 4 views
-1

Я хочу передать строку в метод в классе form1 каждый раз, когда событие происходит в другом классе, а затем я хочу напечатать некоторый текст как многострочный в TextBox в связанной с Windows Form с 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

Вы не можете отобразить многострочную строку в однострочном текстовом поле. Тривиальное решение состоит в том, чтобы установить текстовое поле «Многолинейное свойство» в значение «Истина». –

ответ

0

«\ п» достаточно хорошо для новой строки в C#. Строка newline = "\ n" textBox1.Invoke (новое действие (() => textBox1.Text = newline + s));

+0

Привет, это не решило проблему, новый текст заменил старый текст на той же строке. – odedidush

0

Вы должны установить Multiline свойство управления текстового поля в Истинного, а затем просто называем это:

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 (новое действие (() => textBox1.Text + = Environment.NewLine + s));'. Ваша ошибка связана с тем, что вы должны установить значение Multiline равным true и не использовать метод Environment.NewLine() в качестве метода. – Sara

+0

Я понимаю свои первоначальные ошибки. Я не понимаю, как эти решения решают это, потому что оба: textBox1.Invoke (новое действие (() => textBox1.Text = String.Concat (Environment.NewLine, s))); , textBox1.Invoke (новое действие (() => textBox1.Text + = Environment.NewLine + s)); добавляют связанные тексты - s, как число итераций. FE: на первой итерационной печати: привет, на второй итерационной печати: привет (новая строка) привет, на третьей итерации: привет (новая строка) привет (новая строка) привет и так далее ... – odedidush

Смежные вопросы