关于WebBrowser.DocumentCompleted事件

今天发现使用WebBrowser时载入一个页面后DocumentCompleted事件会被调用2次,后来发现这两次WebBrowser的ReadyState状态是不一样的,第一次是Intercative,第二次是Complete。
MSDN上面对两个状态值的解释是:
Complete 该控件已完成新文档及其所有内容的加载。
Interactive 该控件已经加载足够的文档以允许有限的用户交互,比如单击已显示的超链接。
由此可见,当接受完成Html文本信息后会激发一次,当完成对Html相应的图片,外部其他媒体后会激发第二次。分别是Interactive和Complete。
所以,为了防止重复激活调用事件,还是只取一次的好,我取的是Complete
于是会在DocumentCompleted的相应方法中写入

复制 保存

if(webBrowser1.ReadyState!=WebBrowerReadyState.Complete)
    return;
 
  Thread.Sleep(5000);

webBrowser1.Document.GetElementById("submit").InvokeMember("click");     

            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)     

            {     

                Application.DoEvents();     

            }   

posted @ 2010-01-09 21:32  真功夫  阅读(863)  评论(0编辑  收藏  举报