动态创建的WebBrowser不起作用

时间:2010-04-07 07:50:27

标签: c# .net winforms webbrowser-control

我想在我的代码中以编程方式创建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 个答案:

答案 0 :(得分:2)

导航方法是异步的,因此您应该等待导航完成事件被触发。 但是,如果您想要页面的HTML,请使用System.Net.WebClient。

答案 1 :(得分:1)

Navigate方法异步工作,因此页面在后台加载,当您访问DocumentText属性时没有文本。

尝试为DocumentCompleted事件添加处理程序,并在那里移动Console.WriteLine(browser.DocumentText)来电。

答案 2 :(得分:1)

您需要为要触发的事件提取消息。使用缺少消息调度的while循环阻塞消息泵(例如Application.DoEvents)将不起作用。