日期:2014-05-19  浏览次数:21153 次

webbrowser捕获newwindow事件打开的链接
我就想实现 "WebBrowser控件制作自己个性化的浏览器,但当点击
网页中的链接打开新窗口时总是打开默认的IE窗口. "这个功能,在网上搜索了很多,很多都是关于vb.net的,还有很多人说用BeforeNavigate事件,我在msdn上搜索了下WebBrowser没有这个事件.

希望高手指点下如何实现在c#.net下实现这个功能

下面是我在网上搜索到的一篇文章不过是关于vb.net的::::
webbrowser捕获newwindow事件打开的链接2007-05-07   12:27有很多人希望通过WebBrowser控件制作自己个性化的浏览器,但当点击
网页中的链接打开新窗口时总是打开默认的IE窗口.
很多朋友让webbrowser捕获newwindow事件的打开链接搞得头痛.

其实捕获newwindow事件的打开链接很容易做到只要如下代码一看就清楚了.
代码是在点击链接如是打开新窗口时就会在自己程序的一个窗口中打开,而不会打开
IE窗口了.无论是什么方式打开的新窗口都可以准确的获得当前打开链接的地址url.


Private   Sub   WebBrowser1_NewWindow(ByVal   sender   As   Object,   ByVal   e   As   System.ComponentModel.CancelEventArgs)   Handles   WebBrowser1.NewWindow
                  REM   本代码出自罗漫年华,http://hi.baidu.com/fronthua
                  Dim   urlNew   As   String   =   sender.Document.ActiveElement.GetAttribute( "href ")
                  Dim   newForm   As   New   Form1
                  e.Cancel   =   True
                  newForm.Show()
                  newForm.WebBrowser1.Navigate(urlNew)

          End   Sub
 



------解决方案--------------------
通常是这样
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
MessageBox.Show(webBrowser1.StatusText);
e.Cancel = true;
}
不过webBrowser1.StatusText并不保险,还是参考这个例子:
http://www.codeproject.com/csharp/ExtendedWebBrowser.asp

------解决方案--------------------
C# code


        private void webB_NewWindow(object sender, CancelEventArgs e)
        {
            e.Cancel = true;
            Form1 newFrm = new Form1();//Form1含有webbrowser
            newFrm.webB.Navigate(webB.Document.ActiveElement.GetAttribute("href"));
            newFrm.ShowDialog();
        }