WebBrowser 控制項封裝了 IE ActiveX,需轉型存取底層事件:
// 建構式中註冊
(this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).NewWindow2
+= new SHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(Form1_NewWindow2);
// 事件處理:建立新 Form、指派 ActiveXInstance、顯示
void Form1_NewWindow2(ref object ppDisp, ref bool Cancel) {
Form1 frm = new Form1();
ppDisp = frm.webBrowser1.ActiveXInstance; // 關鍵:將新視窗的 ActiveX 指派給 ppDisp
frm.Show();
Cancel = false; // false 表示允許新視窗
}
SHDocVw (COM: Microsoft Internet Controls)。ppDisp 為 ref object,指派新表單的 ActiveXInstance 讓 IE 在該實例載入目標頁面。WebBrowser 控制項且已初始化。