也许我错过了一些真正简单的事情,但我一直在努力改变RichTextBox的RTF属性,以便将一些颜色编码应用于我的文本。可能是我遇到的问题最直接的例子是将Rtf属性设置为在其标题中包含颜色表。.NET RichTextBox:无法更改Rtf属性
由RTF属性返回的默认字符串RTF:
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}\viewkind4\uc1\pard\f0\fs17\par}
而新的RTF字符串,我想用我的颜色表设置:
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}{\colortbl;\red128\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;}}\viewkind4\uc1\pard\f0\fs17\par}
我使用这个设置:
RichTextBox richTextBox = new RichTextBox();
richTextBox.Rtf = rtfStr; // My new RTF string, as seen above.
但是,通过调试器,可以观察到Rtf属性固执地拒绝ch安格;没有例外,它只是拒绝改变。当我string.Replace()单词在它们周围包含RTF颜色标签时,会发生同样的问题。我也尝试关闭文本框中的任何ReadOnly属性。
任何建议将是最有帮助的,谢谢!
- 戴夫
好吧,我确实看到了什么你看到了。它看起来像RichTextBox控件试图通过添加东西并删除它认为合适的东西来“修复”你的RTF。当我按照上面的方式设置颜色时,拿起那个RTF,然后重新插入,这很好。如果我喂它有点不同,它会删除我的颜色表。如果我给它没有文字,它似乎也删除颜色表,大概是因为没有文字要着色。 – Jeremy 2010-06-10 20:51:19
非常有趣。我注意到RTF属性的某种“自我纠正”行为。我也通过给它一个明显不好的RTF字符串来检查“坏格式,无声校正”理论,它立即拒绝一个ArgumentException。 为了解决您的问题,我的RTB是Windows窗体的一部分,因此它不会被重新创建,并且实际上正在显示。 – Dave 2010-06-11 14:36:50