当前位置: 首页 > 编程笔记 >

C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法

彭存
2023-03-14
本文向大家介绍C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法,包括了C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法的使用技巧和注意事项,需要的朋友参考一下

关于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);

 类似资料:
  • 本文向大家介绍js onmousewheel事件多次触发问题解决方法,包括了js onmousewheel事件多次触发问题解决方法的使用技巧和注意事项,需要的朋友参考一下 我想做一个首屏和第二屏之间滚动鼠标滚轮就可以整平切换的效果,遇到了很多问题,后来在kk的帮助下,终于解决了这个问题,甚是欢喜,于是记录一下: 我最初的代码是这样的: 这样的代码我在IE和火狐下测试都是正常的,但是在谷歌下onmo

  • 本文向大家介绍C# KeyUp事件中MessageBox的回车(Enter)键回调问题解决方案,包括了C# KeyUp事件中MessageBox的回车(Enter)键回调问题解决方案的使用技巧和注意事项,需要的朋友参考一下 本文解析了C# KeyUp事件中MessageBox的回车(Enter)键出现回调问题的解决办法。具体问题如下: 在一个窗体上有一个名为txtTest的Textbox控件,如果

  • 本文向大家介绍Fragment 多层嵌套方法调用问题的解决方案,包括了Fragment 多层嵌套方法调用问题的解决方案的使用技巧和注意事项,需要的朋友参考一下 Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可

  • 本文向大家介绍用Python解决x的n次方问题,包括了用Python解决x的n次方问题的使用技巧和注意事项,需要的朋友参考一下 我考虑到了x的所有n次的情况,下面的代码有可能是不完美的,但是肯定是对的。 以上这篇用Python解决x的n次方问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍C#中Datetimepicker出现问题的解决方法,包括了C#中Datetimepicker出现问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 发现问题 DateTimePicker控件是用来显示和修改日期时间的,但默认只显示日期和修改日期。最近在使用中就遇到了一个问题,下面来随着小编一起看看吧 前几天公司用的物料管理系统出现了一个很奇怪的问题 具体的现象是: 10月31号

  • 本文向大家介绍Jquery on方法绑定事件后执行多次的解决方法,包括了Jquery on方法绑定事件后执行多次的解决方法的使用技巧和注意事项,需要的朋友参考一下 这两天工作中遇到使用js动态加载内容,同时需要对加入的内容绑定点击事件的,当时想想了想可以使用内联的onclick 来实现,后来没有这样做,使用的是 on(‘click',function(){}) ,然而使用on方法的时候就发现,on