【问题标题】:trying to highlight words in WebBrowser control试图突出显示 WebBrowser 控件中的单词
【发布时间】:2011-08-02 10:52:09
【问题描述】:

我正在尝试让我的 WebBrowser 控件突出显示一些单词。 我找到了这个example,但我不知道如何将它翻译成 c#。 任何帮助将不胜感激:)

【问题讨论】:

  • @TBohnen.jnr 添加了它,对不起 :)

标签: c# .net webbrowser-control highlighting


【解决方案1】:

代码已经在 C# 中。您需要添加一个引用来获取接口类型定义。它们是 COM 类型,从 Internet Explorer 类型库导入。

Project + Add Reference,Browse 选项卡,选择 c:\windows\system32\mshtml.tlb。将using mshtml; 放在源代码文件的顶部。 COM 类型的代码相当草率,如果您使用 VS2010,则必须在 References 节点中选择添加的引用 (MSHTML),并将 Embed Interop Types 属性设置为 False,将 Copy Local 属性设置为 True。部署 Microsoft.mshtml.dll 互操作库,您会发现构建目录以及您的程序。

【讨论】:

  • @Hans Passant 我所做的,我现在有一些错误,例如不能嵌入这个互操作类型'mshtml.HTMLDocumentClas'。使用适用的接口 insted。
  • 我应该使用什么接口?
  • 我明确警告过您,“不能嵌入”需要将 Embed Interop Types 属性设置为 false。请查看我的帖子。
  • 感谢您的帮助,但是我有一个问题和问题:
  • 问题:部署是什么意思,我为什么要这样做,我现在得到一个错误:在这一行codeHTMLDocumentClass doc = webBrowser1.Document as HTMLDocumentClass;code i出现如下错误:Error 1 Cannot convert type 'System.Windows.Forms.HtmlDocument' to 'mshtml.HTMLDocumentClass' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
【解决方案2】:

提到的example 实际上会替换内容。因此,当查找文本与带有大写字母的文本匹配时,可能会得到错误的输出。所以使用 indexOf 和 Insert 而不是 Replace 可能有用。

方法如下。

Private Sub WebBrowser_DocumentCompleted(sender As Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser.DocumentCompleted
        Dim doc2 As mshtml.IHTMLDocument2 = WebBrowser.Document.DomDocument
        Dim ReplacementTag As String = "<span style='background-color: rgb(255, 255, 0);'>"
        Dim strBuilder As StringBuilder = New StringBuilder(doc2.body.outerHTML)
        Dim HTMLString As String = strBuilder.ToString()
        If Me.m_NoteType = ExtractionNoteType.SearchResult Then
            Dim SearchWords As New List(Of String)
            SearchWords.AddRange(Me.txtNoteSearch.Text.Trim.Split(" "))
            For Each item As String In SearchWords
                Dim index As Integer = HTMLString.IndexOf(item, 0, StringComparison.InvariantCultureIgnoreCase)
                ''If index > 0 Then
                While (index > 0 AndAlso index < HTMLString.Length)
                    HTMLString = HTMLString.Insert(index, ReplacementTag)
                    HTMLString = HTMLString.Insert(index + item.Length + ReplacementTag.Length, "</span>")
                    index = HTMLString.IndexOf(item, index + item.Length + ReplacementTag.Length + 7, StringComparison.InvariantCultureIgnoreCase)
                End While
                ''End If
                ''strBuilder.Replace(item, "<span style='background-color: rgb(255, 255, 0);'>" + item + "</span>")
            Next
        Else
            ''strBuilder.Replace("<span style='background-color: rgb(255, 255, 0);'>", "<span style='background-color: rgb(255, 255, 255);'>")
        End If
        doc2.body.innerHTML = HTMLString
    End Sub

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 2017-07-14
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多