如何在richTextBox中的索引0中的每一行附近添加数字?

时间:2017-07-10 15:36:50

标签: c# .net winforms

for (int i = 0; i < richTextBox2.Lines.Length; i++)
{
    richTextBox2.Lines[i] = richTextBox2.Lines[i].Insert(0, i + " ");
}

之前尝试使用Insert:

richTextBox2.Lines[i].Insert(0, i + " ");

在这两种情况下都没有添加任何数字。

例如,如果这些行是:

Hello world
Hi
Hello

然后我希望它现在是:

1 Hello world
2 Hi
3 Hello

但循环没有做任何事情,它没有添加任何数字。

2 个答案:

答案 0 :(得分:6)

你无法以这种方式修改单行。如果您look at MSDN,您会发现此评论

  

默认情况下,行集合是行的只读副本   在TextBox中。要获得可写的行集合,请使用代码   类似于以下内容:textBox1.Lines = new string [] {“abcd”};

所以达到目标的正确方法是

string[]  lines = richTextBox2.Lines;

for (int i = 0; i < lines.Length; i++)
{
    lines[i] = (i+1) + " " + lines[i];
}
richTextBox2.Lines = lines;

答案 1 :(得分:3)

您可以尝试使用 Linq

using System.Linq;

...

richTextBox2.Lines = richTextBox2
  .Lines
  .Select((line, index) => $"{index + 1} {line}")
  .ToArray();

请避免重新绘制用户界面(特别是RichTextBox),这可能会降低您的应用程序速度,但会构建数据(行,文本),然后在中进行分配