Question

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.

Lets says i have some text in my Web browser control as "Hello Hey Hello" lets say the user has selected last hello.

Now that word is saved with me along with other info like its length etc.

I need to provide a feature to highlight the selected word when the user reloads the file and sends me that word along with its length and byte offset

Is there any way to do it.

Was it helpful?

Solution

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();
                   }
                }
            }
        }

OTHER TIPS

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;

                        }
                    }

                }
            }
        }
      }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top