如何使WebBrowser等到它完全加载?

Val*_*lav 5 c# webbrowser-control winforms

我有一个带有Web浏览器控件的C#表单.

我试图循环访问不同的网站.

但是,我无法控制URL地址加载到我的表单Web浏览器元素中.

这是我用于浏览URL地址的功能:

public String WebNavigateBrowser(String urlString, WebBrowser wb)
{
    string data = "";
    wb.Navigate(urlString);
    while (wb.ReadyState != WebBrowserReadyState.Complete)
    {
        Application.DoEvents();
    }
    data = wb.DocumentText;
    return data;
}
Run Code Online (Sandbox Code Playgroud)

如何使循环等到完全加载?

我的循环是这样的:

foreach (string urlAddresses in urls)
{
    WebNavigateBrowser(urlAddresses, webBrowser1);
    // I need to add a code to make webbrowser in Form to wait till it loads
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*r83 9

将此添加到您的代码中:

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
Run Code Online (Sandbox Code Playgroud)

填写此功能

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
     //This line is so you only do the event once   
     if (e.Url != webBrowser1.Url) 
        return;


        //do you actual code        



    }
Run Code Online (Sandbox Code Playgroud)


小智 6

经过一段时间的疯狂的IE功能,我遇到了一些东西,这是判断页面加载完成最准确的方法.

永远不要使用WebBrowserDocumentCompletedEventHandler事件使用WebBrowserProgressChangedEventHandler和下面的一些修改.

//"ie"是我们的Web浏览器对象

ie.ProgressChanged += new WebBrowserProgressChangedEventHandler(_ie);
private void _ie(object sender, WebBrowserProgressChangedEventArgs e)
{
  int max = (int)Math.Max(e.MaximumProgress, e.CurrentProgress);
  int min = (int)Math.Min(e.MaximumProgress, e.CurrentProgress);
  if (min.Equals(max))
  {
   //Run your code here when page is actually 100% complete
  }
}
Run Code Online (Sandbox Code Playgroud)

简单的天才方法,我发现这个问题谷歌搜索"如何睡觉网页浏览器或暂停"