【问题标题】:How do I set the Richtextbox.rtf to a rich text string?如何将 Richtextbox.rtf 设置为富文本字符串?
【发布时间】:2018-03-27 03:06:38
【问题描述】:

我正在尝试使用 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,还有其他选择吗?

【问题讨论】:

  • 我以前从未这样做过,但如果我使用以下链接中的 Rtf 字符串,它似乎可以工作:stackoverflow.com/questions/2601917/…
  • 谢谢你,@PerpetualStudent!在您发布您的回复后,我能够自己解决这个问题。只要知道我可以将任何富文本分配给 RTF 属性,就可以为我指明正确的方向。
  • 这是我添加标题后的富文本。如果我将它粘贴到一个空的富文本文件中,这会显示一个很好的标题,但我不能将它分配给 RTF 属性。鉴于我可以在链接到的示例@PerpetualStudent 中分配字符串,我想肯定存在语法不兼容。 "{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}} \viewkind4\uc1\pard\f0\fs17\par {\header 这是一个标题}}"

标签: vb.net richtextbox rtf


【解决方案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

【讨论】:

    猜你喜欢
    • 2011-05-06
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    相关资源
    最近更新 更多