要求新打开的网页受控于WebBrowser 解决办法很简单,分两情况,一是在当前WebBrowser中打开新页面,二是在新Form中的WebBrowser中打开新页面:
public Form1() { InitializeComponent(); this.webBrowser1.AllowWebBrowserDrop = false; //可在属性里设置,很重要 //在新Form中的WebBrowser中打开 (this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).NewWindow2 += new SHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(Form1_NewWindow2); //在主WebBrowser中打开 //(this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(Form1_NewWindow3); } void Form1_NewWindow2(ref object ppDisp, ref bool Cancel) { Form5 frm = new Form5(); //事先建好一个带WebBrowser的窗体 ppDisp = frm.webBrowser1.ActiveXInstance; frm.Show(); } void Form1_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl) { Cancel = true; this.webBrowser1.Navigate(bstrUrl); }
然后如果在新窗口打开新页面,主页面和新页面在同一会话中,可互相影响了.
另:SHDocVw.dll 在 C:/WINDOWS/SYSTEM32下,要引用到项目中来,这个是基础,不应该有疑问吧.
————————————————
版权声明:本文为CSDN博主「niechunyang」的原创文章。
原文链接:https://blog.csdn.net/niechunyang/article/details/5147665