RichTextBox 特定行的值不变

Value of a specific line of RichTextBox not changing

我正在尝试做一个非常简单的事情,应该可以,但不幸的是它不起作用。

我的 Winform 上有一个 RichTextBox 组件。 我正在尝试更改 RichTextBox 某些行的文本值,但它没有更改值。这是我的代码:

    private void button1_Click(object sender, EventArgs e)
    {
        for(int i=0; i < richTextBox1.Lines.Length; i++)
        {
            if(richTextBox1.Lines[i] == "ok")
            {
                richTextBox1.Lines[i] = "Done";
            }
        }
    }

我设置了断点,我注意到它执行了

richTextBox1.Lines[i] = "Done";

但它根本没有改变值。 谁能解释一下?为什么它不修改值? 有没有办法 change/modify 根据行的值?

感谢和问候

根据 MSDN (TextBoxBase.Lines Property):

By default, the collection of lines is a read-only copy of the lines in the TextBox. To get a writable collection of lines, use code similar to the following: textBox1.Lines = new string[] { "abcd" };

所以你最好去:

for (int i = 0; i < richTextBox1.Lines.Length; i++)
{
    if (richTextBox1.Lines[i] == "ok")
    {
        string[] lines = richTextBox1.Lines;
        lines[i] = "done";
        richTextBox1.Lines = lines;
    }
}

更新:另一种方法(虽然我不推荐):

string line = richTextBox1.Lines[i]; 
richTextBox1.Find(line);
richTextBox1.SelectedText = "done";