2017-10-15 99 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

相关问题