我有一个从Foo
派生的类RichTextBox
,它具有私有方法add_text
,但我发现它给出了错误的结果。例如,不是添加文本x
,而是给出x\r\n
。 RichTextBox
类的问题是什么?在使用add_text
方法之前,我用Document.Blocks.Clear()
命令清除了内容
// Appends text to the end with specified selection colors
private void add_text(string text, Brush foreground_brush, Brush background_brush)
{
// here new TextRange(Document.ContentStart, Document.ContentEnd).Text gives ""
TextRange text_range = new TextRange(Document.ContentEnd, Document.ContentEnd);
text_range.Text = text;
// Here new TextRange(Document.ContentStart, Document.ContentEnd).Text gives "x\r\n"
text_range.ApplyPropertyValue(TextElement.BackgroundProperty, background_brush);
text_range.ApplyPropertyValue(TextElement.ForegroundProperty, foreground_brush);
}
UPD:AppendText
命令给出的结果相同(添加了\r\n
个字符)
答案 0 :(得分:1)
这是因为RTB的对象模型仅支持段落中的文本(称为“块”)。它会自动创建一个并将您的文本放入其中。
我们必须从文本中删除所有结尾的换行符,否则,每次加载并保存文本时,我们都会得到另一个。