Почему RichTextBox неявно добавляет символ новой строки? - PullRequest
0 голосов
/ 21 июня 2019

У меня есть класс 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 символов)

1 Ответ

1 голос
/ 21 июня 2019

Это связано с тем, что объектная модель RTB поддерживает только текст в абзацах (известный как блоки).Он создаст один автоматически и поместит в него ваш текст.

Нам пришлось убрать все завершающие символы новой строки из нашего текста, иначе каждый раз, когда он был загружен и сохранен, мы получим другой.

...