我看了很多人用c#写的浏览器,大部分都用的webbrowser 控件,这个倒也无所谓。运行后基本功能都没有问题。
但是都有一个共同的问题:
就是当链接是“弹出新窗口显示”时候,然后程序就会调用本地默认浏览器弹出新的页面了。这个问题不知道各位有没有解决办法?
我突然想到也许多标签页的可以解决,大家有没有这方面的范例?
如果还用原窗口显示的话,大家有什么办法呢?

解决方案 »

  1.   

    private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
            {
                e.Cancel = true;
                webBrowser1.Navigate(webBrowser1.StatusText);
            }
      

  2.   

    webbrowser 控件作为 mshtml 的宿主, 
    只提供有限的能力,
    基本显示还可以,
    若要深入客制化,
    还需了解 IHostDialogHelper, IDocHostUIHandler 等接口..net 这边不多见, vc 版那边多.
      

  3.   

    我有一个  别人做好的例子,你需要的话,可以给我发邮箱。[email protected]
      

  4.   

    Navigate()方法导航到通过url指定的资源object.Navigate( url As String,  [Flags As Variant,] [TargetFrameName As 
    Variant,] [PostData As Variant,] [Headers As Variant])参数TagetFrameName主要用于带框架的URL在浏览器窗口中的显示,其可能的选项为:
    Blank(在新的空白窗口中显示)、
    PARENT(在当前窗口的父窗口显示)、
    SELF(在当前窗口显示)、
    TOP(在当前窗口主体装载链接)等;
      

  5.   

    private void wB_MainBrowser_NewWindow(object sender, CancelEventArgs e)
            {
                e.Cancel = true;
                try
                {
                string url = this.wB_MainBrowser.Document.ActiveElement.GetAttribute("href");
     this.wB_MainBrowser.Url = new Uri(url);
                }
                catch
                {
                }
            }参考
      

  6.   

    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_NewWindow(object sender, CancelEventArgs e)
     { 
       e.Cancel = true; 
    }
    WebBrowser1.AllowWebBrowserDrop=false;
    WebBrowser1.WebBrowserShortcutsEnabled=false;
    WebBrowser1.IsWebBrowserContextMenuEnabled=false
      

  7.   

    关于此贴的答案,本人已发布到我的博客上http://hi.csdn.net/link.php?url=http://blog.csdn.net%2Fxuehuic
    修改newWindow事件是一个简单的方法,比较好的是派生一个新类。