20090807 c# WebBrowser NewWindow2
嵌套WEBBROWSER随便写了个程序,可是新窗口总是弹出IE。
找找资料,可以控制新窗口在本程序中打开,可是本程序又是全屏无菜单的,不想越做越复杂。先记录下吧。
如果你用的是VS2003,WebBrowser控件应该是作为ActiveX控件导入的,在该WebBrowser控件的NewWindow2事件内,有一个 AxSHDocVw.DWebBrowserEvents2_NewWindow2Event参数,你把该参数的ppDisp属性设置为你程序中的 WebBrowser控件的Application即可,这个WebBrowser可以是在另一个窗体内,示例代码如下:
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
Form1 frmWB;
frmWB = new Form1();
frmWB.axWebBrowser1.RegisterAsBrowser = true;
e.ppDisp = frmWB.axWebBrowser1.Application;
frmWB.Visible = true;
}
VS2005和2008自带的WebBrowser控件没有这个事件,只有一个NewWindow事件,但该事件的参数CancelEventArgs没有ppDisp属性
在AxWebBrowser中是像下面这样做的, 不知道2.0中这个WebBrowser实现, 难道又是个BUG?
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
//
// let the web browser does’t open new window.
//
e.ppDisp = this.axWebBrowser1.Application;
}
结论出来了: 又是一个BUG! (上一个是BackgroundWorker: http://community.csdn.net/Expert/topic/4707/4707944.xml?temp=.2000391)
请看feedback中心:
http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackid=c5aa05c2-73ce-40af-b6b1-7b5900cf4e9f
http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx