突出显示C#webBrowser控件中选定的混合文本

时间:2016-01-08 23:21:39

标签: c# html .net webbrowser-control highlighting

作为this suggestion我使用以下代码突出显示webBrowser中的所选文字:

using mshtml;

    if (webBrowser1.Document != null)
    {
        IHTMLDocument2 document = webBrowser1.Document.DomDocument as IHTMLDocument2;
        if (document != null)
        {
            IHTMLSelectionObject currentSelection = document.selection;
            IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange;
            if (range != null)
            {
                string oldText = range.text.Replace("\n", "</br>");
                string newHtmlText = "<span style='background-color: rgb(255, 255, 0);'>" +oldText + "</span>";                        
                range.pasteHTML(newHtmlText);                        
            }
        }
    }

选择普通文本时,每件事都可以。但正如您在此图像中看到的,当选择某些混合文本时,它会损坏文档。

enter image description here

有时,所选文本可能包含表格和其他格式化文本。如何在不更改格式的情况下突出显示文档的任何部分?

1 个答案:

答案 0 :(得分:1)

我找到了答案。

mshtml具有管理文字的完整选项。 Here是execCommand的语法,可以对文档进行任何更改。

通过这种方式,您不需要自己解析html或khnow关于html元素。

using mshtml;

if (webBrowser1.Document != null)
{
    IHTMLDocument2 document = webBrowser1.Document.DomDocument as IHTMLDocument2;
    if (document != null)
    {
        IHTMLSelectionObject currentSelection = document.selection;
        IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange;
        if (range != null)
        {
            range.execCommand("BackColor", false, "FFFF00");                      
        }
    }
}