当前位置:编程学习 > C#/ASP.NET >>

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

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! --------------------编程问答-------------------- 这个问题其实是有难度的。还请高手出面! --------------------编程问答-------------------- tabControl1.SelectedTab = _TabPage;
去掉是没问题的



--------------------编程问答-------------------- 真的不能去掉,如果去掉,点击链接如果激活新窗口事件,没有tabControl1.SelectedTab = _TabPage;
这个代码,就会激活IE浏览器! --------------------编程问答-------------------- 如果是 用 WebBrowser, NewWindow, 里面有一个

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


但是我是用 AxWebBrowser , NewWindow2 里面没有e.Cancel = true; 这个写法 --------------------编程问答-------------------- 测试通过,去掉tabControl1.SelectedTab = _TabPage没有任何关系


--------------------编程问答-------------------- 我测试没通过,而且还会出错! 原本应该新页面打开的链接,不是在新选项卡打开,在原选项卡直接打开 --------------------编程问答--------------------
        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;
        }


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


补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,