最近一个项目需要用到axWebBrowser控件,而axWebBrowser加载的页面中,有一个版块是Iframe框架加载其他站点的页面,而这个站点的所有链接都是target='_black'那种,所以就导致了每次点击这个iframe的链接时,都是新开一个IE浏览器打开页面,这明显不符合项目的要求啊!郁闷了~~~,在网上查了半天的资料,有关axWebBrowser控件的资料很少,更不用说在axWebBrowser内打开这些外部站点的页面了。 看来这能自己搞了~~~
自己研究了几个小时,终于能达到自己想要的效果了,贴个代码出来和大家分享一下:
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
AxSHDocVw.AxWebBrowser _axWebBrowser = CreateNewWebBrowser();
e.ppDisp = _axWebBrowser.Application;
_axWebBrowser.RegisterAsBrowser = true;
}
private AxSHDocVw.AxWebBrowser CreateNewWebBrowser()
{
AxSHDocVw.AxWebBrowser _axWebBrowser = new AxSHDocVw.AxWebBrowser();
this.axWebBrowser1.Controls.Add(_axWebBrowser);
_axWebBrowser.Dock = DockStyle.Fill;
_axWebBrowser.NewWindow2 += (this.axWebBrowser1_NewWindow2);
return _axWebBrowser;
}
原理很简单吧?就是把新打开的外部站点页面在另一个axWebBrowser中显示,然后把该axWebBrowser替换现有的axWebBrowser即可。