Каждый раз, когда исполняемый код входит в цикл foreach,
richTextBox1.Text = num.ToString();
очищает richTextBox1 и вставляет в него num.ToString () . В следующий раз, когда код в этом цикле foreach будет выполнен, содержимое снова будет заменено .
Я думаю, что вы пытаетесь добавить результаты здесь. Есть много способов сделать это. Например, вы могли бы легко изменить этот предыдущий оператор на:
richTextBox1.Text += num.ToString();
Обратите внимание, что оператор + = : + = означает добавление к. Таким образом, richTextBox1.Text = richTextBox1.Text + num.ToString ();
Конечно, вы также можете добавить пробел, чтобы он выглядел красиво ...
richTextBox1.Text += num.ToString()+" ";
Или, как предложил Astander, вы можете использовать StringBuilder . StringBuilder - очень эффективный класс для манипулирования строками без обычных штрафов памяти, что делает это с обычными строковыми классами. Кроме того, следующий код ниже (который очень похож на код Astander, поскольку они по существу функционируют одинаково) обновляет richTextBox1 в пользовательском интерфейсе только один раз , а не один раз для каждого элемента списка.
Код StringBuilder:
StringBuilder sbuilder = new StringBuilder(); //default StringBuilder() constructor
foreach (float num in dosomething.Display())
{
sb.Append(num.ToString() + " ");
}
//Foreach loop has ended - this means all elements of the list have been iterated through
//Now we set the contents of richTextBox1:
richTextBox1.Text = sb.ToString();
Обратите внимание, что в цикле foreach мы добавляемся в StringBuilder с помощью метода StringBuilder.Append () .
Тогда, конечно, вы могли бы еще раз изменить то, что появляется между выведенными числами. Я просто поставил пробел в ("").
Итак, чтобы ответить на ваш вопрос, появляется только один, потому что вы устанавливаете значение каждый раз, а не добавляете. Когда вы устанавливаете значение, предыдущее значение сбрасывается .
Надеюсь, я помог!
P.S. Просто увидел в вашем коде любопытную мелочь:
Tasks dosomething = new dosomething();
Вы уверены, что это не будет:
Tasks dosomething = new Tasks();
Но это не относится к вашему вопросу.