webBrowser弹出窗口问题

hackerlyf 2013-11-25 10:40:53
C#.NET 2010,使用webBrowser控件时遇到的问题:
1、新建一个工程;
2、引入Microsoft Internet Control 组件(在COM下);
3、在Form1上添加webBrowser组件,并设置URL;
4、新增加一个Form,名称为FrmBaseBrowser,在上面添加webBrowser控件;
5、在Form1的代码内输入以下代码:

public Form1()
{
InitializeComponent();
this.webBrowser1.AllowWebBrowserDrop = false;
var nativeBrowser = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
nativeBrowser.NewWindow2 += new SHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(nativeBrowser_NewWindow2);
}

void nativeBrowser_NewWindow2(ref object ppDisp, ref bool Cancel)
{
FrmBaseBrowser frm = new FrmBaseBrowser(); //事先建好一个带WebBrowser的窗体
frm.Show();
ppDisp = frm.webBrowser1.ActiveXInstance;
}

当打开一个弹出窗口时,会弹出两个窗口,一个空白,一个是有内容的,如何解决弹出两个窗口的问题?是不是哪里设置不对?在线等。。。。
...全文
236 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hackerlyf 2013-11-25
  • 打赏
  • 举报
回复
啥问题都解决了!MVP就是不一样;
宝_爸 2013-11-25
  • 打赏
  • 举报
回复
引用 9 楼 hackerlyf 的回复:
我的COM内没有Microsoft Web Browser控件,如何添加这个引用?
我给的链接里有: 1. Start Microsoft Visual Studio. 2. Create a new Visual C# Windows Forms Application project. 3. In the toolbox, click the General panel. 4. Right-click the open panel, and then click Choose Items. 5. Click the COM Components tab, click to select the Microsoft Web Browser check box, and then click OK. 6. In the toolbox, double-click the newly added Microsoft Web Browser control to add it to your form.
rayyu1989 2013-11-25
  • 打赏
  • 举报
回复
axWebBrowser1_NewWindow2>结尾加上 e.Cancel = true;
hackerlyf 2013-11-25
  • 打赏
  • 举报
回复
引用 6 楼 findcaiyzh 的回复:
使用COM中的Microsoft web browser控件

 private void Form1_Load(object sender, EventArgs e)
        {

            
            axWebBrowser1.Navigate("https://www.google.com.au");

        }


 private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
        {
            Form1 frmWB = new Form1();

            frmWB.axWebBrowser1.RegisterAsBrowser = true;
            e.ppDisp = frmWB.axWebBrowser1.Application;
            frmWB.Visible = true;
        }
代码来自: How to use the WebBrowser control NewWindow2 event in Visual C# http://support.microsoft.com/kb/815714/en-us
我的COM内没有Microsoft Web Browser控件,如何添加这个引用?
hackerlyf 2013-11-25
  • 打赏
  • 举报
回复
楼上的兄弟,我没找到COM下面的Microsoft Web Browser控件;不知道是否要安装什么环境?我的是.Net 2010
宝_爸 2013-11-25
  • 打赏
  • 举报
回复
我上面代码测试Google页面上 的链接 右键 ,新窗口中浏览,没有问题。
宝_爸 2013-11-25
  • 打赏
  • 举报
回复
使用COM中的Microsoft web browser控件

 private void Form1_Load(object sender, EventArgs e)
        {

            
            axWebBrowser1.Navigate("https://www.google.com.au");

        }


 private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
        {
            Form1 frmWB = new Form1();

            frmWB.axWebBrowser1.RegisterAsBrowser = true;
            e.ppDisp = frmWB.axWebBrowser1.Application;
            frmWB.Visible = true;
        }
代码来自: How to use the WebBrowser control NewWindow2 event in Visual C# http://support.microsoft.com/kb/815714/en-us
hackerlyf 2013-11-25
  • 打赏
  • 举报
回复
IE内肯定是没有问题的,只会弹出一个窗口; 你也可以找一个JS按钮点击试下,我觉得可能跟这个有关;
好基友一被子 2013-11-25
  • 打赏
  • 举报
回复
是不是你运行的Form1,而Form1又调用了FrmBaseBrowser窗口
hackerlyf 2013-11-25
  • 打赏
  • 举报
回复
楼上的兄弟你好; 我试了下,可能跟我的应用有关;我弹出的一个弹出窗口是一个js按钮引发的,我试了百度上的弹出链接用这种方式也不会有问题,目前还没找到问题在哪里; 上个帖子里说可以设置一个全局变量来判断,这个需要怎么做?或者还有没有其它方案?
飞小猪 2013-11-25
  • 打赏
  • 举报
回复
你可以这样,打开其他的网站,然后试试弹出窗口的个数跟从IE里的弹出个数一样么
飞小猪 2013-11-25
  • 打赏
  • 举报
回复
额,奇怪,我的都是该弹什么就弹什么啊,跟IE里弹出的东西一样,不会多弹出一个空白窗口啊 能贴一下你访问的URL么

111,098

社区成员

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

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

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