Search code examples
c#webbrowser-control

C# how to wait for a webpage to finish loading before continuing


I'm trying to create a program to clone multiple bugs at a time through the web interface of our defect tracking system. How can I wait before a page is completely loaded before I continue?

//This is pseudo code, but this should give you an idea of what I'm trying to do.  The
//actual code uses multi-threading and all that good stuff :).
foreach (string bug in bugs)
{
    webBrowser.Navigate(new Uri(url));
    webBrowser.Document.GetElementById("product").SetAttribute("value", product);
    webBrowser.Document.GetElementById("version").SetAttribute("value", version);
    webBrowser.Document.GetElementById("commit").InvokeMember("click");

    //Need code to wait for page to load before continuing.
}

Solution

  • Try the DocumentCompleted Event:

    webBrowser.DocumentCompleted +=
        new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
    
    void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        webBrowser.Document.GetElementById("product").SetAttribute("value", product);
        webBrowser.Document.GetElementById("version").SetAttribute("value", version);
        webBrowser.Document.GetElementById("commit").InvokeMember("click");
    }