【问题标题】:RichTextBox removes escape character from the textRichTextBox 从文本中删除转义字符
【发布时间】:2020-02-26 00:22:34
【问题描述】:

在将文本添加到 RichTextBox 中的 RTF 属性之前,我对文本进行了一些处理,添加了转义字符,然后将数据划分为多行。

文字是

line1 \n\u001aline2 \n\u001aline3 \n\u001aline4

当我将 VS 2015 与 .Net 4.6.2 一起使用时 RTF 属性中的值为

{\\rtf1\\fbidis\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset0 
Arial;}}\r\n\\viewkind4\\uc1\\pard\\ltrpar\\lang3073\\fs24 Line1 
\\par\r\n\\v\\'1a\\v0 Line2
\\par\r\n\\v\\'1a\\v0 Line3
\\par\r\n\\v\\'1a\\v0 Line4\\par\r\n}\r\n

但是当我使用 .Net 4.7.1 切换到 VS 2017 时 值改为

{\\rtf1\\fbidis\\ansi\\deff0\\nouicompat{\\fonttbl{\\f0\\fnil\\fcharset0
Arial;}}\r\n{\\*\\generator Riched20 10.0.16299}\\viewkind4\\uc1
\r\n\\pard\\ltrpar\\fs24\\lang1033 Line1
\\par\r\n\\v\\'1a\\v0 Line2 \\par\r\n\\v\\'1a\\v0
Line3 \\par\r\n\r\n\\pard\\ltrpar\\v\\'1a\\v0
Line4\\par\r\n}\r\n

当我访问 Text 属性时,我得到了这个 Text

Line1 \nLine2 \nLine3 \nLine4

RichTextBox 删除了 VS 2017 中的转义字符,有人知道为什么吗?

【问题讨论】:

    标签: c# visual-studio-2017 richtextbox rtf .net-4.7.1


    【解决方案1】:

    当您的应用程序以 .NET 4.6.2(或更低版本)为目标时,RichTextBox 实例化 RichEdit 控件版本 3(版本描述为 here),当您的应用程序重新定位到 .NET 4.7.1 时,它实例化 Rich Edit 版本 4.1( msftedit.dll)。 RTF 表示的差异很可能是由较新版本的控件引起的。即使您的应用程序面向 4.7 及更高版本,您也可以选择退出使用较新版本的 Rich Edit,方法是在 AppContextSwitchOverrides 标记下添加具有以下兼容性开关的 app.config 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
      </startup>
      <runtime>
        <AppContextSwitchOverrides
          value="Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl=true" />
      </runtime>
    </configuration>
    

    相反,您可以通过将上述 AppContextSwitch 设置为 false,在面向 .NET 4.6.2 的应用程序中加载 Rich Edit 4.1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多