RichTextBox с источником строки RTF отображает неверно - PullRequest
0 голосов
/ 17 октября 2019

У меня есть строка с текстом в формате rft. Я считаю, что строка верна, потому что, когда я вхожу в блокнот и сохраняю как документ RTF, он отображается правильно. Проблема в том, что выделение не применяется к тексту, когда я пытаюсь передать его в RichTextBox.

Ожидаемый результат - RichtextBox с серым жирным шрифтом и выделенным словом "PORTS". , но я получаю только жирный серый текст

Rtf-строку, которую я передаю RichTextBox:"{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\f0 \ fnil \ fcharset0 Segoe UI;}} {\ colortbl; \ red50 \ green146 \ blue255; \ red235 \ green153 \ blue45; \ red105 \ green105 \ blue105;} \ viewkind0 \ uc1 \ pard \ sa0 \ sl276 \ slmult1 \ cf0Документация \ f0 \ fs32 \ lang9 \ b \ cf3 \ highlight2 PORTS \ highlight0. \ cf0 \ b0 \ par} "

Rtf-строка, которую я сохраняю как документ rtf: {\ rtf1 \ansi \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ ft \ fnil \ fcharset0 Segoe UI;}} {\ colortbl; \ red50 \ green146 \ blue255; \ red235 \ green153 \ blue45; \ red105 \ green105 \ blue105;Документация \ viewkind0 \ uc1 \ pard \ sa0 \ sl276 \ slmult1 \ cf0 \ f0 \ fs32 \ lang9 \ b \ cf3 \ highlight2 PORTS \ highlight0. \ cf0 \ b0 \ par}

Пример строки rtf, которая отображается правильно (здесь текст не лысый и не серый):

"{\ rtf1 \ ansi\ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Segoe UI;}} {\ colortbl; \ red50 \ green146 \ blue255; \ red235 \ green153 \ blue45; \ red105 \ green105 \ blue105;}viewkind0 \ uc1 \ pard \ sa0 \ sl276 \ slmult1 \ cf0 \ f0 \ fs30 \ lang9 \ highlight2 Port \ highlight0 последовательный порт \ highlight2 \ highlight0, использующий порт COM \ highlight2 \ highlight0 s \ par} "

Метод, который я использую для установки строки в RithTextBox:

private void UpdateRtf()
    {
      MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(RtfString));
      TextRange range = new TextRange(Document.ContentStart, Document.ContentEnd);
      range.Load(stream, DataFormats.Rtf);
    }


...