问题:我们如何以编程方式替换WPF RichTextBox
中的某些文本而不丢失其格式?在下面的代码中,我显然没有做正确的事情。我的在线搜索给出了一些相关的建议,但他们似乎使用Winform,其中RichTextBox具有rtf属性-如this之一。
下面的代码正确地将WPF RichTexBox中的文本abcd
替换为rstu
,但它会丢失RichTextBox的格式,如下面两张图所示:
//rtbTest is the name of the RichTextBox
TextRange textRange = new TextRange(rtbTest.Document.ContentStart, rtbTest.Document.ContentEnd);
string oldText = textRange.Text;
string newText = oldText.Replace("abcd", "rstu");
textRange.Text = newText;
将abcd替换为rstu之前的RichTextBox截图:
将abcd替换为rstu后的RichTextBox截图:
正如我们所看到的格式丢失。下面显示的列表并不是一个真正格式化的编号列表,它可能只是未格式化的文本(如1. Item 1
等)。
2条答案
按热度按时间p8h8hvxi1#
它正在丢失格式,因为您将RTF存储到字符串中,而字符串不保持RTF格式。
您可以按以下方式保存它,
llycmphe2#
修改
RichTextBox
内容时,分析TextPointer
上下文非常重要。如何实现它,请参见下面的示例: