方法:

Navigate()

 

事件:

Navigating()

Navigated()

DocumentCompleted()

 

 

Naviagte()的一个有newWidnow参数的重载用于打开一个默认浏览器窗口并加载目标url,此时这个默认浏览器窗口已独立于WebBrowser

 

Navigating()的e参数里有个Cancel属性,可用于取消导航操作

 

Navigated()与DocumentCompleted()的区另在于前者意味着页面数据已加载完毕,后者意味着页面解析完毕,可以作以下试验:

Naviagte一个放置了cnzz计数器(js)的站点,在Navigated里输出DocumentText并Sleep(30000),可以发现DocumentText里包含了目标页的完整html代码,且在Sleep期间,计数器并没有被调用,也就是计数器后台的计数值并没有增加。

 

Navigate是异步执行的,Webbrowser控件会通过触发DocumentCompleted事件来指示网页加载完毕。但当加载的网页包含frame时比如www.sina.com.cn,可能会多次触发该事

 

从微软的官方网站上了解到,并非每个frame都对应了一个DocumentCompleted事件,只有触发了Naviagted事件的frame才会有相应的DocumentCompleted事件。另外,最外层的frame总是最后触发DocumentCompleted事件。

 

以下是常用的三种方法,最后一种计数器方法大概是在Navigated事件中将计数器+1,在DcoumentCompleted中将计数器-1,当计数器==0时,说明目标页面加载并解析完毕。

 

 

Navigate方法是异步执行的,以下是单线程情况是的同步解决方案

 

 

不过建议用信号量解决这类等待操作!

posted on 2009-07-12 20:33  x_craft  阅读(102)  评论(0)    收藏  举报