2017-10-15 102 views
0

我正在嘗試使用VB.NET和Visual Studio 2017爲RichTextBox中的富文本添加標題。根據文檔,Richtextbox.rtf應該允許我獲取或設置包含控制代碼的富文本。但是,我無法將* .rtf設置爲包含富文本的字符串。我知道富文本是正確的,因爲如果我將它粘貼到* .rtf文件中,它會正確顯示。如何將Richtextbox.rtf設置爲富文本字符串?

測試代碼如下所示:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim hdr As String = "{\header This is a header}" 
     Dim s As String = RichTextBox1.Rtf 
     s = s.Insert(s.LastIndexOf("}"c) - 1, hdr) 
     MsgBox(s) 
     With RichTextBox1 
      RichTextBox1.Rtf = s 
      MsgBox(RichTextBox1.Rtf) 
     End With 
    End Sub 

s的正確格式爲富文本,但RichTextBox1.Rtf是賦值後保持不變的字符串。我錯過了什麼?如果我不能通過這種方式分配RichTextBox1.Rtf,是否有其他選擇?

+0

我從來沒有這樣做過,但如果我使用RTF格式字符串從下面的鏈接,它似乎工作:https://stackoverflow.com/questions/ 2601917/how-do-feed-an-rtf-string-to-a-richtextbox-control?rq = 1 – PerpetualStudent

+0

謝謝@PerpetualStudent!在您發佈回覆後,我能夠讓自己工作。只要知道我可以將任何富文本分配給RTF屬性就是一條線索,它指向了正確的方向。 –

+0

這是添加標題後的豐富文本。如果我將它粘貼到一個空的富文本文件中,這將顯示一個不錯的標題,但我無法將其分配給RTF屬性。鑑於我可以分配連接到示例@PerpetualStudent的字符串,我想必須有語法不兼容。 「{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Microsoft Sans Serif;}} \ viewkind4 \ uc1 \ pard \ f0 \ fs17 \ par {\ header這是一個標題} }「 –

回答

1

再次感謝@PerpetualStudent!

問題似乎是RichTextBox1.RTF字段不接受「{\ header This is a header}」控制代碼。這可能是由於設計,因爲RichTextBox無法顯示標題。我試圖把控制代碼放在富文本字符串的不同位置,但是這也不起作用。

我可以通過其他方式編輯富文本(請參閱下文),但我無法插入標題控制代碼。這是不幸的,因爲它是富文本標準的一部分。無論如何,現在我知道問題是什麼,我可以想出一個解決方案。解決方法可能是修改打印並保存我的富文本框打印控件表單的代碼,以在打印或保存操作中添加頁眉和頁腳。

這工作:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click With RichTextBox1 Dim s As String = .Rtf s = s.Replace("Hello", "Good morning") MsgBox(s) .Rtf = s MsgBox(.Rtf) End With End Sub

相關問題