在winform中使用IE的Broswer控件很方便,但是我在处理它的打开新窗口事件中出了点小问题,百思不得其解。
假定我的Broswer控件名字叫做WB,那么我们可以找到下面这个事件:
public void WB_NewWindow2(object sender,AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
}
我们可以看到在里面,e有两个属性
{
}
e.cancel和e.ppDisp
从MSDN里面对他们的解释如下:
ppDisp
Object expression that, optionally, receives a new, hidden WebBrowser or InternetExplorer object with no URL loaded.
Cancel
Boolean value to determine whether the current navigation should be canceled.
true
Cancel the navigation.
false
Do not cancel the navigation.
从字面上来看,ppDisp应该是用来接收要打开的新窗口;cancel可以用来停止打开新窗口。为了关闭IE打开的新窗口,于是我在这里面构造了一个新的Broswer控件,然后把它的Application值赋值给e.ppDisp,可是就是不行,还是依然会弹出新的窗口。 我把e.cancel设置成了true也不行。。。。。不知道为什么。。。。奇怪。。。。
后来,我在调用这个控件的窗体上写上了一段事件处理程序,专门用来返回一个新的Broswer控件,然后在这个这里面去触发那个事件,用事件来返回就可以了。。。奇怪。。。。。
对了,每次弹出的新窗口倒是可以被截获了,但是还是不能知道新窗口的地址。。。。获得不了,只能等那个新窗口打开之后,才能通过LocationURL来获得。。。。不知道有没有什么好办法。。。郁闷。。
从MSDN里面对他们的解释如下:
ppDisp