时间:2021-05-20
关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,大概出现了以下几种情况。
1、WebBrowser载入一个页面后DocumentCompleted事件会执行两次,但这两次的ReadyState状态不一样,分别是Intercative和Complete。而MSDN对这两种状态值的解释是:Complete该控件已完成新文档及其所有内容的加载;Interactive该控件已经加载足够的文档以允许有限的用户交互,比如单击已显示的超链接。由此可见,实际上DocumentCompleted事件会在Interactive状态和Complete状态各调用一次,那么我们可以根据我们的需要来判断到底需要那一次。解决办法实例代码如下:
复制代码 代码如下:
if(webBrowser1.ReadyState!=WebBrowerReadyState.Complete)
return;
2、如果一个页面中含有多个框架页,那么在每个框架页加载完成时也可能触发一次DocumentCompleted事件(MSDN对其解释是在多个的帧的情况下DocumentComplete获取触发多次。并非每个框架将触发此事件,但触发DownloadBegin事件的每个框架将触发相应的DocumentComplete事件)。这种情况下解决办法实例代码如下:
复制代码 代码如下:
if(e.Url.ToString()!=webBrowser1.Url.ToString())
return;
此外,MSDN给出了另外一种方案,详见:
3、对于以上两种情况我是没遇到,却碰到了第三种情况:在我的DocumentCompleted事件里执行了相应的代码,结果又触发了一次DocumentCompleted事件,如此循环往复,没完没了。使用webBrowser1.Stop(),还是没法停止。webBrowser1.Nagviate("about:blank")问题还是依旧。这时候我们只能卸载DocumentCompleted事件了,即在DocumentCompleted事件里执行完你需要的代码后,再来一句:
复制代码 代码如下:
webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法:使用WebBrowser的ProgressChanged事件,在时间中判
openoffice不能调用SCIM的问题解决方法$oowriterQUOTE:Gtk-Message:Failedtoloadmodule"gnomebrea
本文实例分析了ajax调用中ie缓存问题解决方法。分享给大家供大家参考,具体如下:ajax请求调用的过程中发现的问题:后台请求是一个简单的.aspx文件,而这个
本文实例讲述了C#约瑟夫问题解决方法。分享给大家供大家参考。具体分析如下:决约瑟夫问题描述如下:设有n个人围坐一圈,现以某个人开始报数,数到m的人出列,接着从出
Mysqlmysqllostconnectiontoserverduringquery问题解决方法缘由:在查询Mysql中的数据库,或者修改比较大的表的时候就会