我有一个Windows商店应用,其中包含RichEditBox
。此框可以以背景和字体颜色为主题。文本可以保存到RTF文档中。为了做到这一点,我需要将文本格式化为黑色字体(例如,如果前景色设置为白色或黄色,如果在写字板中打开,它几乎难以辨认)
我有以下代码来执行此操作:
string content = string.Empty;
editor.Document.GetText(TextGetOptions.FormatRtf, out content);
autosave_helper.Document.SetText(TextSetOptions.FormatRtf, content);
autosave_helper.Document.Selection.StartPosition = 0;
autosave_helper.Document.Selection.EndPosition = content.Length;
ITextSelection selectedText = autosave_helper.Document.Selection;
if (selectedText != null)
{
selectedText.CharacterFormat.ForegroundColor = Colors.Black;
}
autosave_helper.Document.GetText(TextGetOptions.FormatRtf, out content);
代码有效,但在20,000字的文档上,这需要大约20秒。我已经为每行代码计时,并且惊讶地发现selectedText.CharacterFormat.ForegroundColor = Colors.Black;
是最慢的部分。其他所有内容都会在瞬间执行,但此格式化行每次大约需要20秒。
我想出了一个解决方法/丑陋的黑客,它直接改变了RTF源中的颜色标题,但这并不是所有时间都有效。
如何在不使用上述代码的情况下更改RichText内容的颜色?
注意:在有人建议之前,将前景色设置为黑色的不可见RichEditBox无效,因为RichText文档中的颜色标题会覆盖前景颜色控制(应该如此)。