如何将Richtextbox.rtf设置为富文本字符串?

时间:2017-10-15 14:14:53

标签: vb.net richtextbox rtf

我正在尝试使用VB.NET和Visual Studio 2017在RichTextBox中为富文本添加标题。根据文档,Richtextbox.rtf应该允许我获取或设置包含控制代码的富文本。但是,我无法将* .rtf设置为包含富文本的字符串。我知道富文本是正确的,因为如果我将其粘贴到* .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,还有其他选择吗?

1 个答案:

答案 0 :(得分: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