也許我錯過了一些真正簡單的事情,但我一直在努力改變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