【问题标题】:WebBrowser control problemWebBrowser 控制问题
【发布时间】:2010-01-06 13:36:35
【问题描述】:

我正在使用此代码:

//I store the website urls in mylist
list<string> mylist=new list<string>();     

foreach(string webname in mylist)
{
    wbmain.navigate(webname);
}

但是代码中有一个问题是 wbmain.navigate 第一个 url 并且不等待第一个 url 打开它打开第二个............它显示了最后一个 url。

终于看到最后一页了。

如何检查第一个网址是否打开并等待 15 秒并打开第二页?

【问题讨论】:

    标签: c# webbrowser-control


    【解决方案1】:

    你可以试试:

    List<string> myList = new List<string>();
    
    foreach(string webName in myList)
    {
        wbmain.navigate(webName);
    
        // Sleep for 15 seconds.
        System.Threading.Thread.Sleep(15000);
    }
    

    ...该示例假定您正在使用 WinForms。

    有一种更好(更正确)的方法可以等待页面加载完毕。 WebBrowser 控件有一个DocumentCompleted 事件,您可以使用它在每次当前页面完成加载时重新加载一个新地址。检查 MSDN 文档的链接:

    WebBrowser.DocumentCompleted - MSDN

    【讨论】:

    • Thread.Sleep 会阻塞浏览器,因为它试图通知主线程 Navigating 事件,而通知被 Thread.Sleep 阻塞。
    • @Sheng 这个例子很快而且让我想不到,这就是为什么我发布了更好(和正确)的方法来等待页面完成加载。
    【解决方案2】:

    您也可以关注this example 并在新标签中打开每个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 2013-08-15
      • 2012-06-14
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多