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