Dot-Net

System.Windows.Forms.WebBrowser 在同一視窗或具有同一會話的新視窗中打開連結

  • July 22, 2020

使用 .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();
}

引用自:https://stackoverflow.com/questions/175836