none
WebBrowser中关于Document事件注册失效 RRS feed

  • 问题

  • 问题描述:

    给WebBrowser的DocumentCompleted事件添加方法,如下:

     

    internal void handleDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {

                Log.println(" ******* document = "+this.webBrowserEx1.Document.GetHashCode());

                if(listenedDocument == null || !listenedDocument.Equals(this.webBrowserEx1.Document)){

                    addRecordListeners();

                    listenedDocument = this.webBrowserEx1.Document ;

                    Console.WriteLine(" ++++++++++++++++++++++++++++++++++++ Download completed, add document listener . url = " + this.webBrowserEx1.Url);

                }

    }

     

    private void addRecordListeners() {

                this.webBrowserEx1.Document.MouseMove += new HtmlElementEventHandler(Document_MouseMove);

            }

    操作对象为126邮箱,当在第一页的时候,自动天剑Document_MouseMove方法成功,登陆邮箱,跳转到邮箱登陆后的页面,从日志看,browser的Document对象没有变化(哈希值一样),但是,Document_MouseMove方法就不起作用了,既然Document对象没有变化,有没有地方移除注册的Document_MouseMove方法,为什么就不起作用了呢?

    原始的初衷:只想只在Documen对象发生变化的时候注册一次Document_MouseMove方法,减少注册的次数,后改成这样,只要有DocumentComplete事件就触发下面的代码,但是问题依旧,在登入到126的邮箱成功后,Document_MouseMove方法就不起作用了。

     

    internal void handleDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {

                Log.println(" ******* document = "+this.webBrowserEx1.Document.GetHashCode());

                addRecordListeners();

    }

     

     

    求高手明示,谢谢

    • 已编辑 cylixhui 2011年8月22日 6:50
    2011年8月22日 6:09

答案

全部回复