.net – System.Windows.Forms.WebBrowser在同一窗口或同一会话的新窗口中打开链接

当使用.NET Webbrowser控件时,如何使用相同的会话在新窗口中打开链接(即不要在服务器上启动新的ASP.NET会话),或者如何捕获新的窗口事件在同一个Webbrowser控件中打开URL?
我刚刚花了一个小时寻找答案,所以我虽然会在这里发布结果.您可以使用SHDocVwCtl.Webbrowser_V1对象捕获NewWindow事件.

注意:代码http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_21484555.html#discussion

//-------------------------------VB.NET Version:-------------------------------

Dim WithEvents Web_V1 As SHDocVwCtl.Webbrowser_V1

Private Sub Form_Load()
    Set Web_V1 = Webbrowser1.Object
End Sub

Private Sub Web_V1_NewWindow(ByVal URL As String,ByVal Flags As Long,ByVal TargetFrameName As String,PostData As Variant,ByVal Headers As String,Processed As Boolean)
    Processed = True
    Webbrowser1.Navigate URL
End Sub


//-------------------------------C# Version-------------------------------

private SHDocVw.Webbrowser_V1 Web_V1; //Interface to expose ActiveX methods

private void Form1_Load(object sender,EventArgs e)
{
    //Setup Web_V1 interface and register event handler
    Web_V1 = (SHDocVw.Webbrowser_V1)this.webbrowser1.ActiveXInstance;
    Web_V1.NewWindow += new SHDocVw.DWebbrowserEvents_NewWindowEventHandler(Web_V1_NewWindow);
}

private void Web_V1_NewWindow(string URL,int Flags,string TargetFrameName,ref object PostData,string Headers,ref bool Processed)
{
    Processed = true; //Stop event from being processed

    //Code to open in same window
    this.webbrowser1.Navigate(URL);

    //Code to open in new window instead of same window
    //Form1 Popup = new Form1();
    //Popup.webbrowser1.Navigate(URL);
    //Popup.Show();
}

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...