代码很简单(运行环境:WinXP + VS2008 + IE7)
       void webBrowser_DocumentComplete(object pDisp, ref object URL)
        {
            System.Windows.Forms.MessageBox.Show(URL.ToString());//1
            try
            {
                if (webBrowser.ReadyState == tagREADYSTATE.READYSTATE_COMPLETE)
                {                    
                    document = webBrowser.Document as HTMLDocument;//2
                    System.Windows.Forms.MessageBox.Show(webBrowser.Document.ToString());//3
                }
            }
            catch (Exception ee)
            {
                System.Windows.Forms.MessageBox.Show(ee.Message);
            }
        }如果去掉代码//2一切运行正常,如不然//1和//3都不会执行,有没人知道为什么?

解决方案 »

  1.   

    Dim document As System.Windows.Forms.HtmlDocument = _
            webBrowser.Document
      

  2.   

    URL是ref参数,可是该方法里没有为其赋值的地方啊?会不会与此有关。。
      

  3.   

    Dim doc as IHTMLDocument2 = webBrowser1.Document.DomDocument 
      

  4.   


    我用的是SHDocvw.WebBrowser,只能用mshtml.HTMLDocument转换
      

  5.   

    可以使用标准的WebBrowser控件啊,你转换的目的是什么啊
      

  6.   


    这是个事件,跟这个没关系,也就是说把//2取掉,可以正常输出URL
      

  7.   

    这位老兄,我在MS上看到你的很多回复,我也仔细研究过,但始终找不到问题所在,SHDocvw.WebBrowser.Document后就只有几个属性了
      

  8.   

    document = webBrowser.Document.DomDocument as HTMLDocument;
    然后使用document访问HTMLDocument的属性
      

  9.   

    专家你好,转换是为了读取当前WebBrowser所加载网页的内容,顺便问个问题,IE7与IE8也是使用标准的WebBrowser控件或跟其相关的架构吗?
      

  10.   

     dim document  as HTMLDocument= Ctype(webBrowser.Document,HTMLDocument)
      

  11.   

    VB好多年都没用了,C#里貌似没有Ctype函数
      

  12.   

    加上这句试试Application.DoEvents()感觉是窗体线程没重新分配的问题
      

  13.   

    用SHDocvw用的话,直接用IHtmlDocument2这样的接口
    Dim doc as IHTMLDocument2 = webBrowser1.Document
    Document是一个object,文档类型不同的时候类型也不同。在显示HTML文档时支持IHTMLDocument2,显示word文档时支持Word的自动化接口
      

  14.   

    IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
      

  15.   

    IHTMLWindow2 win = (IHTMLWindow2)webBrowser1.Document;
      

  16.   


    Dim htm As mshtml.HTMLDocument = DirectCast(axWebBrowser1.Document, mshtml.HTMLDocument) Dim document As HTMLDocument = DirectCast(webBrowser.Document.DomDocument, HTMLDocument) 
      

  17.   

    真是奇怪了,我用Object Browseer看了SHDocvw.WebBrowser,只有Document属性,没见着其下面还有个DomDocument属性啊
      

  18.   


    不好意思,C#里没有DirectCast这个函数
      

  19.   

    不是SHDocvw.WebBrowser.DomDocument
    是SHDocvw.WebBrowser.Document.DomDocument
    印象中是有的.