C#怎样写等待webBrowser打开完毕后执行代码?

时间:2022-11-23 10:09:04
我是要写自动填表,要等webBrowser打开完毕后才能获取元素并控制。。

 

怎么用代码控制,网页打开完毕后执行******(一段代码)?

 

我知道webBrowser有个DocumentCompleted事件。

(在web浏览器控件中承载的文档圈闭加载完毕后发生)

 

但是怎样在一个按钮单击事件中用呢???

 

有没有什么其他方法控制web控件加载文档完毕后执行代码?

8 个解决方案

#1


看看呀!!!!

#2


你在按钮单击事件中动态调用不行吗?

private void webBrowser1_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e)

然后把你的要执行的写在调用这个之后

#3


添了后要再刷新才行

#4


这样感觉很不方便,要新建个方法、、、、

有没有其他方法呢??比如获取控件的状态是否在加载网页之类的???

#5


可以循环判断webBrowser1.IsBusy==false和webBrowser1.ReadyState==WebBrowserReadyState.Complete,但是有可能会误判

#6


private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) 

     Application.DoEvents(); 

button1.performClick();
}

#7


引用 6 楼 wuyq11 的回复:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) 

     Application.DoEvents……


#8


C#的webBrowser控件,浏览完毕判断的真正的方法:

1.在浏览一个新页面之前
  int loadingNumber = 0;
  int completeNumber = 0;

2.开始浏览

3.事件:Navigating
  loadingNumber++;

4.事件:DocumentCompleted
  completeNumber++
  如果completeNumber == loadingNumber
  则本次加载结束,进行下一次加载。


环境
VS2008
C# WinForm
测试页面:
http://www.163.com
http://www.sohu.com
http://www.qq.com
http://www.csdn.com
http://www.msdn.com


鄙视下那些用 Application.DoEvents ,以及用 Navigated 做判断,以及 webBrowser1 属性的人,话说你们真做过测试了?

#1


看看呀!!!!

#2


你在按钮单击事件中动态调用不行吗?

private void webBrowser1_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e)

然后把你的要执行的写在调用这个之后

#3


添了后要再刷新才行

#4


这样感觉很不方便,要新建个方法、、、、

有没有其他方法呢??比如获取控件的状态是否在加载网页之类的???

#5


可以循环判断webBrowser1.IsBusy==false和webBrowser1.ReadyState==WebBrowserReadyState.Complete,但是有可能会误判

#6


private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) 

     Application.DoEvents(); 

button1.performClick();
}

#7


引用 6 楼 wuyq11 的回复:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) 

     Application.DoEvents……


#8


C#的webBrowser控件,浏览完毕判断的真正的方法:

1.在浏览一个新页面之前
  int loadingNumber = 0;
  int completeNumber = 0;

2.开始浏览

3.事件:Navigating
  loadingNumber++;

4.事件:DocumentCompleted
  completeNumber++
  如果completeNumber == loadingNumber
  则本次加载结束,进行下一次加载。


环境
VS2008
C# WinForm
测试页面:
http://www.163.com
http://www.sohu.com
http://www.qq.com
http://www.csdn.com
http://www.msdn.com


鄙视下那些用 Application.DoEvents ,以及用 Navigated 做判断,以及 webBrowser1 属性的人,话说你们真做过测试了?