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";
我正在尝试做一个非常简单的事情,应该可以,但不幸的是它不起作用。
我的 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";