Вывод массива в richtextbox
У меня есть заполняемый случайными числами массив, который необходимо вывести в richTextBox. Ранее заполнение массива и его вывод я оформлял прямо в коде кнопки "вывести", который выглядел следующим образом:
void Button1Click(object sender, EventArgs e)
{
...
richTextBox1.Clear();
Random rand = new Random();
for (int i = 0; i < L; i++) {
string s = "";
for (int j = 0; j < N; j++) {
M[i,j] = rand.NextDouble() * (Rend - Rbeg) + Rbeg;
s = s + string.Format("{0,7:F2}", M[i,j]);
}
richTextBox1.AppendText(s + "\n");
}
}
Цикл генерировал новое число в массиве, а затем добавлял его в строку s, в результате чего в строке накапливалось n-ное количество значений, которые потом через ApppendText выводились на экран. В результате получался следующий вид массива:
Далее я решил перенести заполнение массива в другой модуль Class1, в котором сделал отдельный метод, возвращающий в итоге массив. Теперь мне необходимо понять, как его можно вывести в таком же виде в AppendText. Единственное, что мне приходит на ум - создать отдельный метод, в котором объявить строковый массив размером с количество строк массива, после чего заполнить его строчками с линиями присоединённых друг к другу значений. Есть ли возможность осуществить вывод через метод в более удобном и простом виде, без необходимости делать отдельный строковый массив?
Ответы (1 шт):
Так как операция конкатенации строк - медленно, а каждое обращение к интерфейсу в данном случае еще медленнее, можно первое заменить на StringBuilder, а второе сделать 1 раз.
private void PrintArray(double[,] numbers)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < numbers.GetLength(0); i++)
{
for (int j = 0; j < numbers.GetLength(1); j++)
sb.Append(numbers[i, j].ToString("F2").PadLeft(7)); // можно string.Format, разницы нет
sb.AppendLine();
}
richTextBox1.Text = sb.ToString();
}
