我正在努力做一件非常简单的事情应该有效,但不幸的是它不起作用。
我的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更改/修改值?
谢谢和问候
答案 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";