none
webbrowser NewWindow 事件没有触发 RRS feed

  • 问题

  • 我在webbrowser中打开一个网页,希望当用户点击这个页面的任何链接后,打开ie浏览器打开新页面。

    我的方法如下,但是发现NewWindow 没有触发,ie没有被打开。

    请问如何解决?

    void webBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e)
            {
                //throw new System.NotImplementedException();
                if (webBrowser1.Url.ToString() != "http://www.baidu.com")
                {
                    System.Diagnostics.Process.Start(webBrowser1.Url.ToString());
                }
            }

    2013年9月12日 8:05

答案

  • NewWindow事件触发时打开一个新的IE窗口才会触发的,如果打开的一个连接在原来的窗口打开是不会触发这个事件的,如果你想实现的你需求就需要对Navating的事件进行捕获,具体实现代码如下:

      public Form1()
            {
                InitializeComponent();
                webBrowser1.Navigate(new Uri("http://www.cnblogs.com"));
               this.webBrowser1.Navigating+=new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
            }
    
            private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
            {
                // 确保第一次能在WebBrowser控件中打开网页和点击页面上的连接用其他浏览器打开
                if (!e.Url.AbsoluteUri.Equals("http://www.cnblogs.com")&& e.Url.AbsoluteUri.Contains("cnblogs"))
                {
                    // 取消掉当前事件
                    e.Cancel = true;
    
                    // 如果你默认的不是IE浏览器,又想用IE打开,可以使用下面的代码来用IE打开
                    Process.Start("IExplore.exe", e.Url.ToString());
    
                    // 用默认浏览器打开
                    //Process.Start(e.Url.ToString());
                }
    
            }

    我已经在本地测试过了,是可以完成你的需求的。


    If my post is helpful,please help to vote as helpful, if my post solve your question, please help to make it as answer. My sample

    2013年9月12日 10:22