How to Highlight a specific word in WebBrowser control C#

后端 未结 2 1978
猫巷女王i
猫巷女王i 2021-02-08 17:35

I have a webbrowser control and I am able to get the selected word by the user. I am saving this word in a file and with it I am also saving its byte offset and length.

相关标签:
2条回答
  • 2021-02-08 18:02

    you're going to need to import the Microsoft.mshtml assembly reference if you haven't already, and add

    using mshtml;
    
            if (webBrowser1.Document != null)
            {
                IHTMLDocument2 document = webBrowser1.Document.DomDocument as IHTMLDocument2;
                if (document != null)
                {
                    IHTMLBodyElement bodyElement = document.body as IHTMLBodyElement;
                    if (bodyElement != null)
                    {
                        IHTMLTxtRange trg = bodyElement.createTextRange();
    
    
                        if (trg != null)
                        {
                            const String SearchString = "Privacy"; // This is the search string you're looking for.
                            const int wordStartOffset = 421; // This is the starting position in the HTML where the word you're looking for starts at.
                            int wordEndOffset = SearchString.Length;
                            trg.move("character", wordStartOffset);
                            trg.moveEnd("character", wordEndOffset);
    
                            trg.select();
                        }
                    }
                }
            }
    

    here is a snippet that might be helpful also:

            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)
                    {
                       const String search = "Privacy";
    
                       if (range.findText(search, search.Length, 2))
                       {
                           range.select();
                       }
                    }
                }
            }
    
    0 讨论(0)
  • 2021-02-08 18:09

    I am a novice programmer is my best samples. Just spend a lot of time.

    Just connect your library

    Project - add a link - Overview - windows - system32 - mshtml.tlb

    using mshtml;
    
      private void button1_Click(object sender, EventArgs e)
        {
    
        webBrowser1.Refresh();
    
            Application.DoEvents();
    
            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 search = textBox1.Text;
                        if (search == "")
                        {
                            MessageBox.Show("not selected");                          
                        }
                        else
                        {
                        line1:
                            if ((range.findText(search)) && (range.htmlText != "span style='background-color: rgb(255, 255, 0);'>" + textBox1.Text + "</span>"))
                            {
                                range.select();
                                range.pasteHTML("<span style='background-color: rgb(255, 255, 0);'>" + textBox1.Text.ToLower() + "</span>");
                                goto line1;
    
                            }
                        }
    
                    }
                }
            }
          }
    
    0 讨论(0)
提交回复
热议问题