代码之家  ›  专栏  ›  技术社区  ›  Maciej

动态创建的WebBrowser不工作

  •  1
  • Maciej  · 技术社区  · 16 年前

    我想在我的代码中用程序创建WebBrowser控件,然后读取页面内容。
    我想我做的和设计器一样,但动态创建的控件不起作用(documenttext返回空字符串)

    我做错什么了?

    编辑2: @axarydax建议后的代码更改(有效)

    主块代码:

    WebBrowser browser = new WebBrowser { Name = "myBrowser"};
    browser.DocumentCompleted += browser_DocumentCompleted;
    browser.Navigate("www.google.com");
    while (pageLoaded == false)
    {
      Thread.Sleep(500);       // pageLoaded is local field
      Application.DoEvents();  // didn't wotk without this...
    }
    Console.WriteLine(browser.DocumentText);
    

    事件处理程序代码:

    void browser_DocumentCompleted (object sender, WebBrowserDocumentCompletedEventArgs e )
    { 
        pageLoaded = true; 
    }
    
    3 回复  |  直到 15 年前
        1
  •  2
  •   Axarydax    16 年前

    导航方法是异步的,所以您应该等待NavigationComplete事件被激发。 但是,如果需要页面的HTML,请使用System.net.WebClient。

        2
  •  1
  •   Tim Robinson    16 年前

    这个 Navigate 方法是异步工作的,因此当您访问 DocumentText 属性。

    尝试将处理程序添加到 DocumentCompleted 活动和移动 Console.WriteLine(browser.DocumentText) 打电话到那里。

        3
  •  1
  •   Sheng Jiang 蒋晟    16 年前

    您需要发送消息以触发事件。用缺少消息调度的while循环(例如application.doEvents)阻塞消息泵将无法工作。

    推荐文章