0

有谁知道除了使用第 3 方文本框控件之外是否还有其他方法可以将 HTML 输入到 VB6 文本框中。

我没有在网上找到任何东西。

4

1 回答 1

3

希望您能够利用这一点。我们在 .Net 中这样做是为了允许对表单进行简单的编辑控件以发送格式化的电子邮件。因此,我们有一个带有用于创建文本的自定义菜单的 RTF 文本框,然后我们提取 RTF,将其转换为 HTML 并将其作为 HTML 内容添加为电子邮件正文。RTF 到 HTML 的转换使用本文中的代码:http: //www.codeproject.com/Articles/27431/Writing-Your-Own-RTF-Converter

下面是我们用来将其绑定在一起的包装代码——它只接受一个 RTF 输入并直接返回一个 HTML 输出:

Imports Itenso.Rtf
Imports Itenso.Rtf.Support
Imports Itenso.Rtf.Parser
Imports Itenso.Rtf.Interpreter
Imports Itenso.Rtf.Converter.Image
Imports Itenso.Rtf.Converter.Html
Imports Itenso.Sys.Application
Namespace Email
  Public Class RtfToHtml

    Public Function Convert(inText As String) As String
      Dim struct = ParseRtf(inText)
      Dim doc = InterpretRtf(struct)
      Return ConvertHtml(doc)
    End Function


    Private Function ParseRtf(inText As String) As IRtfGroup
      Dim structureBuilder As New RtfParserListenerStructureBuilder
      Dim parser = New RtfParser(structureBuilder) With {.IgnoreContentAfterRootGroup = True}
      Dim source = New RtfSource(inText)
      parser.Parse(source)
      Return structureBuilder.StructureRoot
    End Function

    Private Function InterpretRtf(rtfStructure As IRtfGroup) As IRtfDocument
      Dim settings = New RtfInterpreterSettings With {.IgnoreDuplicatedFonts = True, .IgnoreUnknownFonts = True}
      Return RtfInterpreterTool.BuildDoc(rtfStructure, settings)
    End Function

    Private Function ConvertHtml(document As IRtfDocument) As String
      Dim settings As New RtfHtmlConvertSettings With {.Title = "Notification Of Shipment",
                                                       .IsShowHiddenText = False,
                                                       .UseNonBreakingSpaces = True}
      Dim converter = New RtfHtmlConverter(document, settings)
      'converter.StyleConverter = New RtfEmptyHtmlStyleConverter
      Return converter.Convert
    End Function

  End Class
End Namespace

根据您的应用程序,您可以简单地将其包装在一个程序集中并从 VB6 调用它。我们过去已经这样做了,而且相当简单。再次,如果您认为它可能对您有用,请提供更多信息

于 2013-06-14T16:34:38.457 回答