代码之家  ›  专栏  ›  技术社区  ›  Iqbal

RichTextBox的特定行的值未更改

  •  0
  • Iqbal  · 技术社区  · 9 年前

    我正在尝试做一件非常简单的事情,这件事情应该会奏效,但不幸的是它没有奏效。

    我有一个 RichTextBox 我的组件 Winform . 我正在尝试更改 多格式文本框 但它不会改变值。这是我的代码:

        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 回复  |  直到 9 年前
        1
  •  1
  •   stefankmitph    9 年前

    根据MSDN( TextBoxBase.Lines Property ):

    默认情况下,行集合是TextBox中行的只读副本。要获取一个可写的行集合,请使用类似以下的代码:textBox1.lines=newstring[]{“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";