试图在WebBrowser控件中突出显示单词

时间:2011-04-10 11:12:57

标签: c# .net webbrowser-control highlighting

我试图让我的WebBrowser控件突出显示一些单词。 我发现了这个example,但我没有得到如何将其转换为c#。 任何帮助将不胜感激:))

2 个答案:

答案 0 :(得分:1)

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

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互操作库,您将找到构建目录以及您的程序。

答案 1 :(得分:1)

提到的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