【问题标题】:Retain highlighted color of text after editing编辑后保留文本的突出显示颜色
【发布时间】:2020-11-13 13:44:55
【问题描述】:

删除他前面一行的内容后,我在我的 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”是通过剪贴板粘贴方法插入的简单图像。

【问题讨论】:

    标签: c# winforms richtextbox


    【解决方案1】:

    你绝不能(读懂我的话:从不,从不,从不)更改为 TextRichtTextBoxLines 属性,否则你将失去/搞砸所有以前的格式化。

    所以你需要改变这个:

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

    到这个序列:

    首先选择Text中您想以某种方式更改的部分:

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

    现在你可以改变它了。要删除任一使用:

    richTextBox1.SelectedText = "";
    

    richTextBox1.Cut(); 
    

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

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

    先选择再修改

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

    【讨论】:

    • 你说的很对,谢谢你的解决方案和非常好的建议......
    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2016-03-29
    • 2010-10-18
    相关资源
    最近更新 更多