Как добавить новую строку в строку в таблице умножения C # - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь создать таблицу умножения.

Это то, что я должен создать: Multiplication Table

Это то, что у меня сейчас есть: Current Multiplication Table

Мой код (для кнопки «время»):

private void button1_Click(object sender, EventArgs e)
{
    int i = 0;
    string s = " ";
    int m = int.Parse(textBox4.Text);
    while (i <= 10)
    {
        s = s + "\n" + m + " * " + i + " = " + m * i + "\n";
        i++;
    }
    textBox1.Text = s;
    label2.Text = "Timetable created with <<while>>";
}

Очевидно, проблема в String = s, но я просто не могу понять это!

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Поскольку вы добавляете несколько строк в цикл, лучше использовать StringBuilder:

var sb = new StringBuilder();
while (i <= 10)
{
    sb.Append(m)
      .Append(" * ")
      .Append(i)
      .Append(" = ")
      .AppendLine(m * i); // AppendLine will append the line break for you after the value
    i++;
}
textBox1.Text = sb.ToString()

Это связано с тем фактом, что строка является неизменной, и поэтому для каждого добавления вы фактически создаете новую строку в памяти - в то время как StringBuilder использует внутренний буфер (вероятно, массив символов) для построения строка строка за частью и имеет гораздо лучшую производительность.

0 голосов
/ 11 ноября 2018

В Windows вы должны использовать \r\n для перемещения каретки на новую строку. Он хранится в Environment.NewLine. Изменить

s = s + "\n" + m + " * " + i + " = " + m * i + "\n";

до

s = s + "\n" + m + " * " + i + " = " + m * i + Environment.NewLine;

Кстати: попробуйте взглянуть на ListView элемент управления, похоже, он больше соответствует вашей задаче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...