WinForms文本框-操作无效异常错误:无法加载文本-仅在.Net 6中发生

iqjalb3h  于 2022-11-16  发布在  .NET
关注(0)|答案(1)|浏览(128)

我使用的是System.Windows.Forms.RichTextBox,并具有以下代码:

var testRichTextBox = new System.Windows.Forms.RichTextBox();
    var testText = @"{\rtf1\ansi\deff0{\fonttbl{\f0 Courier New;}}{\colortbl\red0\green0\blue0;}\fs20{\cf0 \ud{\u160}}\line }";
    testRichTextBox.Rtf = testText;

相同的代码在**.Net 4.7.2**中运行良好。

当试图在**.Net 6**中运行它时,会产生以下异常:

System.InvalidOperationException: Cannot load the text.
   at System.Windows.Forms.RichTextBox.StreamIn(Stream data, SF flags)
   at System.Windows.Forms.RichTextBox.StreamIn(String str, SF flags)
   at System.Windows.Forms.RichTextBox.set_Rtf(String value)

在MSDN上的.Net 6中的WinForms突破性更改中找不到任何有关它的文档,原因可能是什么?
编辑:
代码在同一台计算机上执行,通过Visual Studio更改.Net版本

#if !NETCOREAPP
            var testRichTextBox = new System.Windows.Forms.RichTextBox();
            var testText = @"{\rtf1\ansi\deff0{\fonttbl{\f0 Courier New;}}{\colortbl\red0\green0\blue0;}\fs20{\cf0 \ud{\u160}}\line }";
            testRichTextBox.Rtf = testText;
#endif
#if NETCOREAPP
            var testRichTextBox = new System.Windows.Forms.RichTextBox();
            var testText = @"{\rtf1\ansi\deff0{\fonttbl{\f0 Courier New;}}{\colortbl\red0\green0\blue0;}\fs20{\cf0 \ud{\u160}}\line }";
            testRichTextBox.Rtf = testText;
#endif
7rfyedvj

7rfyedvj1#

我的经验是,在5和6之前的.Net版本在执行严格的RTF方面似乎更宽松。
我的RTF字符串有一个格式问题,缺少一个结尾的},它在.Net 4.7.2中工作,但会以您在.Net 6中描述的相同方式出错。我对RTF标准做了一些研究才弄清楚。
可能值得验证RTF,尽管对我来说,这比我预期的要难,因为似乎缺少这样做的工具。

相关问题