编辑后保留突出显示的文本颜色

Retain highlighted color of text after editing

在删除他前面一行的内容后,无法在我的文本上保留我在 RichTextBox 中设置的高亮效果。

无论我从控件中删除多少文本,它总是会删除我设置为其中已包含的文本的自定义 SelectionColor 和 SelectionBackColor。

我的删除方法代码:

private void btnRemove_Click(object sender, EventArgs e)
{
    //Remove selected line from RichTextBox
    richTextBox1.Text = richTextBox1.Text.Remove(richTextBox1.Text.Length - 1, 1);
    //Remove all blank lines remaining after deletion                  
    richTextBox1.Text = Regex.Replace(richTextBox1.Text, @"^\s*$(\n|\r|\r\n)", "", RegexOptions.Multiline);
}

这里我要删除的字母个数是1个,因为"AND"这个词是用剪贴板粘贴方法插入的简单图片

你绝不能(读我的嘴唇:永远,永远,永远)更改为 TextRichtTextBoxLines 属性 否则你会 lose/mess up 所有以前的格式。

所以你需要改变这个:

richTextBox1.Text = richTextBox1.Text.Remove(richTextBox1.Text.Length - 1, 1);

到这个序列:

首先 Select Text 您想要以某种方式更改的部分:

richTextBox1.SelectionStart = richTextBox1.Text.Length - 1;
richTextBox1.SelectionLength = 1;

现在您可以更改它了。要删除其中一个,请使用:

richTextBox1.SelectedText = "";

richTextBox1.Cut(); 

后一个版本也会将文本放入剪贴板;这样做会保留该部分的格式,您可以 Paste 它到其他地方..

当您要添加或更改任何类型的格式时,同样的规则适用:

先Select再修改

而且,是的,这意味着第二个命令会增长很多,即您必须用循环替换 RegEx.Replace :-(