axwebbrowser newwindow2 如何不自动激活新页面啊。

链企家 2012-09-04 10:12:25
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();
 _axWebBrowser.Tag = new HE_WebBrowserTag();
 TabPage _TabPage = new TabPage();
 _TabPage.Controls.Add(_axWebBrowser);
 _axWebBrowser.Dock = DockStyle.Fill;
 _axWebBrowser.BeforeNavigate2 += new AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(this.axWebBrowser1_BeforeNavigate2);

 _axWebBrowser.DocumentComplete += new AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(this.axWebBrowser1_DocumentComplete);

 _axWebBrowser.NavigateComplete2 += new AxSHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(this.axWebBrowser1_NavigateComplete2);

 _axWebBrowser.NavigateError += new AxSHDocVw.DWebBrowserEvents2_NavigateErrorEventHandler(this.axWebBrowser1_NavigateError);

 _axWebBrowser.NewWindow2 += new AxSHDocVw.DWebBBrowserEvents2_NewWindow2EventHandler(this.axWebBrowser1_NewWindow2);
 _axWebBrowser.ProgressChange += new AxSHDocVw.DWebBrowserEvents2_ProgressChangeEventHandler(this.axWebBrowser1_ProgressChange);

 _axWebBrowser.StatusTextChange += new AxSHDocVw.DWebBrowserEvents2_StatusTextChangeEventHandler(this.axWebBrowser1_StatusTextChange);

 _axWebBrowser.TitleChange += new AxSHDocVw.DWebBrowserEvents2_TitleChangeEventHandler(this.axWebBrowser1_TitleChange);

 _axWebBrowser.CommandStateChange += new AxSHDocVw.DWebBrowserEvents2_CommandStateChangeEventHandler(this.axWebBrowser1_CommandStateChange);

 tabControl1.TabPages.Add(_TabPage);
 tabControl1.SelectedTab = _TabPage;

 return _axWebBrowser;

}

以上是代码。在 CreateNewWebBrowser()方法中,tabControl1.SelectedTab = _TabPage;这段代码就等于在前台立即激活新建选项卡。

如果我去掉这句话,目的是想让新页面选项卡在后台打开。

这样,是不行的,这样会激活IE浏览器。并在IE浏览器中激活新页面。

我的问题是,如何不用tabControl1.SelectedTab = _TabPage;这句,让新页面和新选项卡在后台打开,焦点还是停留在当前的选项卡中。 同时又不激活IE!
...全文
160 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SocketUpEx 2012-09-04
  • 打赏
  • 举报
回复
        private void Form1_Load(object sender, EventArgs e)
{
axWebBrowser1.Navigate("http://www.sina.com.cn");
}

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();

TabPage _TabPage = new TabPage();
_TabPage.Controls.Add(_axWebBrowser);
_axWebBrowser.Dock = DockStyle.Fill;

_axWebBrowser.NewWindow2 += (this.axWebBrowser1_NewWindow2);

tabControl1.TabPages.Add(_TabPage);

return _axWebBrowser;
}


你是不是中了其他代码?
我使用上面精简过的代码,是没问题的


链企家 2012-09-04
  • 打赏
  • 举报
回复
我测试没通过,而且还会出错! 原本应该新页面打开的链接,不是在新选项卡打开,在原选项卡直接打开
SocketUpEx 2012-09-04
  • 打赏
  • 举报
回复
测试通过,去掉tabControl1.SelectedTab = _TabPage没有任何关系


链企家 2012-09-04
  • 打赏
  • 举报
回复
如果是 用 WebBrowser, NewWindow, 里面有一个

e.Cancel = true; //使外部无法捕获此事件


但是我是用 AxWebBrowser , NewWindow2 里面没有e.Cancel = true; 这个写法
链企家 2012-09-04
  • 打赏
  • 举报
回复
真的不能去掉,如果去掉,点击链接如果激活新窗口事件,没有tabControl1.SelectedTab = _TabPage;
这个代码,就会激活IE浏览器!
SocketUpEx 2012-09-04
  • 打赏
  • 举报
回复
tabControl1.SelectedTab = _TabPage;
去掉是没问题的



链企家 2012-09-04
  • 打赏
  • 举报
回复
这个问题其实是有难度的。还请高手出面!

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧