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!

解决方案 »

  1.   

    tabControl1.SelectedTab = _TabPage;
    去掉是没问题的
      

  2.   

    真的不能去掉,如果去掉,点击链接如果激活新窗口事件,没有tabControl1.SelectedTab = _TabPage;
    这个代码,就会激活IE浏览器!
      

  3.   

    如果是 用 WebBrowser, NewWindow, 里面有一个 e.Cancel = true; //使外部无法捕获此事件
    但是我是用 AxWebBrowser , NewWindow2 里面没有e.Cancel = true; 这个写法
      

  4.   

    测试通过,去掉tabControl1.SelectedTab = _TabPage没有任何关系
      

  5.   

            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;
            }你是不是中了其他代码?
    我使用上面精简过的代码,是没问题的