c# - 带有 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# - 如何使继承类的构造函数在类的构造函数之后运行
- reactjs - react 没有通过 redux 数组映射
- mysql - (我如何)Azure 数据工厂到(本地)使用证书的 mysql 数据库连接
- jquery - 更改图片来源不适用于变量
- c# - Unity - CommandInvokationFailure:Gradle 构建失败
- mysql - Docker Compose 与 MySQL 发生错误
- python - 使用Pygame让子弹以一定速度跟随移动物体?
- ios - iOS 推送通知仅由开发设备接收
- ssl - 在 z/os 上实现 ssl
- netbeans-8 - 无法连接到 Netbeans 插件门户