场景是当我点击开始按钮开始这个帖子时:
var t = new Thread(get_webbrowser_page);
t.SetApartmentState(ApartmentState.STA);
t.Start();
启动此功能:
public void get_webbrowser_page()
{
WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
string htmla = "as";
browser.DocumentCompleted += (s, e) =>
{
var html = browser.DocumentText;
htmla = html.ToString();
};
MessageBox.Show("ASD=" + htmla);
}
我的任务是模拟点击href元素,但我不能这样做,因为DocumentText总是空的。
我已经解决了这个WebBrowser - empty DocumentText问题,但它并不适用于我。 我哪里错了?
答案 0 :(得分:0)
首先,将消息框放在事件处理程序中,如Pragmateek建议的评论。请注意,DocumentCompleted事件是按帧/ iframe触发的。很高兴知道。看到这个问题/答案:https://stackoverflow.com/a/3431520/767926
答案 1 :(得分:0)
好的,我也在这里红了WebBrowser DocumentCompleted event fired more than once现在我的代码是:
var t = new Thread(startNavigate);
t.SetApartmentState(ApartmentState.STA);
t.Start();
和
private int mFrameCount;
public WebBrowser webBrowser1 = new WebBrowser();
private void startNavigate()
{
string url = "http://www.google.com";
mFrameCount = 0;
webBrowser1.Navigate(url);
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.Equals(webBrowser1.Url))
{
MessageBox.Show("Now it is really done");
}
}
private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
mFrameCount += 1;
bool done = true;
if (webBrowser1.Document != null)
{
HtmlWindow win = webBrowser1.Document.Window;
if (win.Frames.Count > mFrameCount && win.Frames.Count > 0) done = false;
}
if (done)
{
MessageBox.Show("Now it is really done");
}
}
但它还没有工作......我很难理解如何使用WebBrowser ......!
(在第一个代码中,我改变了消息框的位置而没有结果)