如何判断C#webbrower页面是否加载完毕方法

 我来答
盘默M2
推荐于2017-09-25 · TA获得超过2.9万个赞
知道大有可为答主
回答量:9723
采纳率:93%
帮助的人:8197万
展开全部
webbrower里面坦滚锋,每次打开一个页面,里面有多个iframe,那么navigated和completed会执行多次,如何让它只在最后正规页面加载完再执行一次completed事件。经过研究总结,下面有三种可以实现判断:
方法/步骤
第一种方法:
////////计数器递增函数////////
public void counteradd(object sender, EventArgs e)
{
counter++;//一次navigated就加一次
}//备空///////页面加载完要执行的函数///////////public void go(object sender, EventArgs e)
{
counter4--;//一次completed就减一次
if (0 == counter4)//等于0表示刚好加载完鸟
{ 要干什么就写这里了
}
}/////////把事件handle一下/////////this.webBrowser1.Navigated += new System.Windows.Forms.WebBrowserNavigatedEventHandler(counteradd); this.webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(go);

第二种方法:
若是一个页面中含有多个框架页,那么在每个框架页加载完成时也可能触发一次DocumentCompleted事让晌务(MSDN对其申明是在多个的帧的景象下DocumentComplete获取触发多次。并非每个框架将触发此事务,但触发DownloadBegin事务的每个框架将触发响应的DocumentComplete事务)。 this.webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(go);
private void go(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.ToString() != webBrowser1.Url.ToString())
return;//不断拒绝,只有URL是webbrowser1的navigate地址才接受
else
{ 要干什么就写这里了
}
}

第三种方法:
WebBrowser载入一个页面后DocumentCompleted事务会履行两次,但这两次的ReadyState状况不一样,分别是Intercative和Complete。而MSDN对这两种状况值的申明是:Complete该控件已完成新文档及其所有内容的加载;Interactive该控件已经加载足够的文档以容许有限的用户交互,比如单击已显示的超链接。由此可见,实际上DocumentCompleted事务会在Interactive状况和Complete状况各调用一次,那么我们可以按照我们的须要来断定到底须要那一次。解决办法实例代码如下: this.webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(go);
private void go(object sender, WebBrowserDocumentCompletedEventArgs e)
{if(webBrowser1.ReadyState != WebBrowserReadyState.Complete)

return; else{ 要干什么就写这里了}}基本就三种方法了,在有firame的页面里面,第一种=第二种+第三种,自己想想为什么。再搞不定那就只能god bless you 了,别找piikee了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式