none
InternetExplorer的DocumentComplete事件为什么不能操作,有什么解决办法! RRS feed

  • 问题

  • using   System;
    using   System.Collections.Generic;
    using   System.ComponentModel;
    using   System.Data;
    using   System.Drawing;
    using   System.Text;
    using   System.Windows.Forms;
    using   mshtml;
    using   SHDocVw;
    namespace   WindowsApplication
    {
            public   partial   class   Form1   :   Form
            {
                    SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
                   
                    public   Form1()
                    {
                            InitializeComponent();
                             ie.DocumentComplete += new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete);
                      ie.Visible = true;
                      object o = null;
                      ie.Navigate(@"http://www.njgwy.gov.cn/", ref o, ref o, ref o, ref o);
                    }

                     private void ie_DocumentComplete(object sender, ref object URL)
                {
                   MessageBox.Show( "hello "); //被执行
                     mshtml.IHTMLDocument2 htmlDoc = (mshtml.IHTMLDocument2)ie.Document;//不被执行
                 }
            }
    }

    2010年12月24日 2:11

答案

  • 终于自己搞定了,分享一下啊,只要把代码改成下面的就可以了,

     

    using   System;
    using   System.Collections.Generic;
    using   System.ComponentModel;
    using   System.Data;
    using   System.Drawing;
    using   System.Text;
    using   System.Windows.Forms;
    using   mshtml;
    using   SHDocVw;
    namespace   WindowsApplication
    {
            public   partial   class   Form1   :   Form
            { 

                    bool tag=true;
                    SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
                   
                    public   Form1()
                    {
                            InitializeComponent();
                             ie.DocumentComplete += new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete);
                      ie.Visible = true;
                      object o = null;
                      ie.Navigate(@"http://www.njgwy.gov.cn/", ref o, ref o, ref o, ref o);

                      while (tag)
                     {
                         Application.DoEvents();//等待本次加载完毕才执行下次循环.
                     }
                             mshtml.IHTMLDocument2 htmlDoc = (mshtml.IHTMLDocument2)ie.Document;//不被执行
                    }

                     private void ie_DocumentComplete(object sender, ref object URL)
                {
                    tag=false;
                 }
            }
    }

     

    2010年12月24日 12:54

全部回复

  • 哪位帮帮忙啊!
    2010年12月24日 2:42
  • 那个页面有框架。等浏览器把所有框架都下载完再说吧。DocumentComplete是每个框架触发一次的。

     



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年12月24日 3:14
    版主
  • 可是改成如下代码,还是不行啊! 

    void ie_DocumentComplete(object sender, ref object URL)
                {
                   if (URL.ToString() == @"http://www.njgwy.gov.cn/")
                  {
                       MessageBox.Show( "hello "); //被执行
                       mshtml.IHTMLDocument2 htmlDoc = (mshtml.IHTMLDocument2)ie.Document;//不被执行
                  }
                 
                 }

     

    2010年12月24日 3:22
  • 执行 IWebBrowser2 webBrowser = (IWebBrowser2)IE看看是不是COM的原因

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年12月24日 3:50
    版主
  • 你能吧你的msn给我吗,我的是gugan@live。cn
    2010年12月24日 3:58
  • 还是不懂啥意思,能具体点不
    2010年12月24日 4:27
  • 终于自己搞定了,分享一下啊,只要把代码改成下面的就可以了,

     

    using   System;
    using   System.Collections.Generic;
    using   System.ComponentModel;
    using   System.Data;
    using   System.Drawing;
    using   System.Text;
    using   System.Windows.Forms;
    using   mshtml;
    using   SHDocVw;
    namespace   WindowsApplication
    {
            public   partial   class   Form1   :   Form
            { 

                    bool tag=true;
                    SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
                   
                    public   Form1()
                    {
                            InitializeComponent();
                             ie.DocumentComplete += new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete);
                      ie.Visible = true;
                      object o = null;
                      ie.Navigate(@"http://www.njgwy.gov.cn/", ref o, ref o, ref o, ref o);

                      while (tag)
                     {
                         Application.DoEvents();//等待本次加载完毕才执行下次循环.
                     }
                             mshtml.IHTMLDocument2 htmlDoc = (mshtml.IHTMLDocument2)ie.Document;//不被执行
                    }

                     private void ie_DocumentComplete(object sender, ref object URL)
                {
                    tag=false;
                 }
            }
    }

     

    2010年12月24日 12:54
  • 感谢分享
    2010年12月26日 14:37
  • gugan1 您好,

    欢迎来到MSDN论坛!

    很高兴知道你已经把问题解决了,谢谢你在这里分享你的解决方案和经验,这将给那些在论坛里面和你遇到类似问题的朋友提供很大的帮助。

    感谢你的理解和支持!

    Mio

     


    Mio Miao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2010年12月27日 3:24
    版主