为什么RichTextBox隐式添加换行符?

时间:2019-06-21 14:48:49

标签: c# wpf richtextbox

我有一个从Foo派生的类RichTextBox,它具有私有方法add_text,但我发现它给出了错误的结果。例如,不是添加文本x,而是给出x\r\nRichTextBox类的问题是什么?在使用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个字符)

1 个答案:

答案 0 :(得分:1)

这是因为RTB的对象模型仅支持段落中的文本(称为“块”)。它会自动创建一个并将您的文本放入其中。

我们必须从文本中删除所有结尾的换行符,否则,每次加载并保存文本时,我们都会得到另一个。