2013-11-26 3 views
3

Я хочу, чтобы моя форма отображалась 1,2,3,4,5 , но все, что она делает, это снова и снова заменяет текст.For loop in forms

for (int i = 1; i <= 5; i++) 
{ 
    richTextBox1.Text = Convert.ToString(i); 
} 

Я знаю, что это из-за .Text, что он всегда переопределяет себя. Но как я могу оставить их в форме, он будет отображать:

1 
2 
3 
4 
5 

ответ

2

Проблема заключается в том, что в цикле, вы полностью заменить текст с каждым итерация. Таким образом, текст остается с любым последним значением i.

Попробуйте положить добавление к существующему тексту (с +=) и положить новую строку (Environment.NewLine или "\n") между каждым номером:

for (int i = 1; i <= 5; i++) 
{ 
    richTextBox1.Text += Environment.NewLine + Convert.ToString(i); 
} 

Или в качестве альтернативы, немного Linq может сделать вашу жизнь намного проще:

richTextBox1.Text = string.Join(Environment.NewLine, Enumerable.Range(1, 5)); 
+1

вы, вероятно, следует использовать 'Environment.NewLine' в качестве разделителя. В каждом номере OP каждый номер находился в отдельной строке. –

+0

@IlyaIvanov Хороший улов, спасибо за обновление вопроса, чтобы подчеркнуть оригинальные намерения OP. –

1

Попробуйте это:

for (int i = 1; i <= 5; i++) 
{ 
    richTextBox1.Text += Convert.ToString(i) + Environment.NewLine; 
} 

Edit:

Просто заметил, что вы хотите напечатать один номер в каждой строке. \n является символом NewLine и даст вам возврат каретки в конце строки.

Environment.NewLine также является хорошим выбором, потому что это даст вам символ новой строки на основе среды приложение работает в.

0

Приложить текст, не просто назначить его.

richTextBox1.Text += Convert.ToString(i); 

это equivelant из

richTextBox1.Text = richTextBox1.Text + Convert.ToString(i); 
0

Это будет также сделать:

for (int i = 1; i <= 5; i++) 
{ 
    richTextBox1.AppendText(i + Environment.NewLine); 
} 
0
richTextBox1.AppendText(i.ToString()+Environment.NewLine); 
+0

не нужно вызывать 'ToString()' здесь –

+0

ну ... yup ..... –