首页 > 解决方案 > 带有 rtf 字符串源的 RichTextBox 显示不正确

问题描述

我有带有 rft 格式文本的字符串。我相信这个字符串是正确的,因为当我在记事本中输入并保存为 rtf 文档时,它会正确显示。 问题是当我尝试将其传递给 RichTextBox 时,突出显示未应用于文本。

预期的结果是带有灰色粗体文本的 RichtextBox,带有突出显示的单词“PORTS”,但我只得到粗体灰色文本

我传递给 RichTextBox 的 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\fs32\lang9\b\cf3\highlight2 PORTS\highlight0 文档。\cf0\b0\par }"

我保存为 rtf 文档的 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\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 Serial \highlight2 port\highlight0 that uses COM \highlight2 port\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);
    }


标签: c#wpf-controlsrichtextboxrtf

解决方案


推荐阅读