请高手看一下,为什么不能触发newwindow3事件?

大刘0417 2014-06-10 01:53:59
代码如下:

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private SHDocVw.WebBrowser VwWeb = new SHDocVw.WebBrowser();

void VwWeb_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)
{
MessageBox.Show("我是newwindow3");
}
mshtml.HTMLDocument MSHDoc = new mshtml.HTMLDocument();
private void Form1_Load(object sender, EventArgs e)
{
VwWeb.RegisterAsBrowser = true;
webBrowser1.Url = new Uri("http://34.82.52.171");
VwWeb = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;

VwWeb.NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(VwWeb_NewWindow3);
VwWeb.NewWindow2 += new SHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(VwWeb_NewWindow2);
}

void VwWeb_NewWindow2(ref object ppDisp, ref bool Cancel)
{
MessageBox.Show("我是newwindow2");
}
}
}


"http://34.82.52.171"是一个网页的弹出窗口,但只能触发“我是newwindow2”,不能触发“我是newwindow3,请教为什么,如何解决?
...全文
644 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
不告诉你嘎嘎 2016-09-17
  • 打赏
  • 举报
回复
是引用的那个dll的属性...哈好
不告诉你嘎嘎 2016-09-17
  • 打赏
  • 举报
回复
后发现在shdocvw属性中.net4.0比.net2.0多了一个嵌入互操作类型的属性,将其改为false 这个属性具体是个啥?请楼主赐教
大刘0417 2014-06-11
  • 打赏
  • 举报
回复
感谢楼上两位回贴。 通过反复测试,终于找到问题原因。 在.net2.0条件下,可以正常捕获到newwindow3事件,但同样的代码在.net4.0下就只能捕获到newwindow2事件。以上代码是在.net4.0条件下运行的。后发现在shdocvw属性中.net4.0比.net2.0多了一个嵌入互操作类型的属性,将其改为false,正常,改回true就无法使用newwindow3事件。 问题解决但原因不明,有兴趣的朋友可以帮测试一下。
蒋晟 2014-06-11
  • 打赏
  • 举报
回复
MessageBox.Show这个是阻塞性操作,没返回的时候事件不会继续触发 尽量不要在COM事件处理中放阻塞性操作。
save4me 2014-06-10
  • 打赏
  • 举报
回复
在注册事件前加上下面这个属性设置看一下
this.webBrowser1.AllowWebBrowserDrop = false; //可在属性里设置,很重要

参考: blog.csdn.net/yuananyun/article/details/5640701

110,552

社区成员

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

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

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