本帖最后由 sui_bian 于 2010-10-10 23:42:47 编辑

解决方案 »

  1.   

     //让打开的页面在本窗口显示
            private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
            {
                e.Cancel = true;
                WebBrowser webBrowser_temp = (WebBrowser)sender;
                string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");
                                this.webBrowser1.Url = new Uri(newUrl);
            }        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                //将所有的链接的目标,指向本窗体  
                foreach (HtmlElement archor in this.webBrowser1.Document.Links)
                {
                    archor.SetAttribute("target", "_self");
                }
                //将所有的FORM的提交目标,指向本窗体   
                foreach (HtmlElement form in this.webBrowser1.Document.Forms)
                {
                    form.SetAttribute("target", "_self");
                }
            }        private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
            {
                WebBrowser webBrowser_temp = (WebBrowser)sender;
                string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");
               
                    e.Cancel = true;
            }总不结帖子,都不想回答了。
      

  2.   

    试了一下楼上的办法,NewWindow事件不会进,DocumentCompleted事件进了,Copy楼上的代码后运行,仍会弹IE
      

  3.   

    private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
      {
      WebBrowser webBrowser_temp = (WebBrowser)sender;
      string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");
        
      e.Cancel = true;
      }
    可以删除,
    NewWindow事件不会进,你webbroser有绑定这个事件,直接copy上面代码当然不行了,还要手动绑定到事件。
      

  4.   

    DocumentCompleted事件都进了,当然有绑定
      

  5.   

    因为第二个url的页面中的js会自动执行跳转,所以必须等到所有页面跳转都完成后,才能够dispose这个webbrowser
    解决办法是返回前等待一段时间,或者把页面转到一个空白页: ...
     string result = webBrowser.DocumentText;
     webBrowser.Navigate("about:blank");
     Application.DoEvents();
     return result;一般来说不需要重复创建webbrowser,创建一个类成员就可以了(就是被你注释起来的那种写法),这种情况下如果还有弹出IE的情况,可以参考1楼的写法,并且注意退出程序前延迟足够的时间,让webbrowser有机会把页面处理完成。