RichTextBox的特定行的值不会更改

时间:2015-03-14 18:08:18

标签: c# winforms richtextbox

我正在努力做一件非常简单的事情应该有效,但不幸的是它不起作用。

我的RichTextBox上有Winform个组件。 我正在尝试更改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";

但它根本不会改变价值。 有人能解释一下吗?为什么不修改价值呢? 有没有办法根据Line更改/修改值?

谢谢和问候

1 个答案:

答案 0 :(得分:1)

根据MSDN(TextBoxBase.Lines Property):

  

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

所以你最好去:

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";