當使用.NET WebBrowser控件時,如何使用同一會話在新窗口中打開鏈接(即..不要啓動服務器上的新ASP.NET會話),或者如何捕獲新窗口事件以在同一個WebBrowser控件中打開URL?System.Windows.Forms.WebBrowser在同一個窗口或同一會話的新窗口中打開鏈接
12
A
回答
19
我剛剛花了一個小時尋找答案,所以我雖然我會在這裏發佈結果。您可以使用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();
}
3
稍微清理了格雷格的回答版本。它修改了傳入的控件的行爲,而不是依賴於全局變量。用法:
InlinePopups(webBrowser1);
代碼:
// interface to expose ActiveX methods
private SHDocVw.WebBrowser_V1 Web_V1;
private void InlinePopups(WebBrowser browser)
{
// hooks to force new windows to open in the current instance
Web_V1 = (SHDocVw.WebBrowser_V1)browser.ActiveXInstance;
Web_V1.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler((string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed) =>
{
Processed = true; // stop event from being processed
// open in the existing window
browser.Navigate(URL);
});
}
仍然需要參考%WINDIR當然%\ SYSTEM32 \ shdocvw.dll中。
相關問題
- 1. 鏈接在同一個窗口中打開(必須是一個新的窗口)
- 2. 鏈接打開同一個窗口
- 3. 強迫在同一域的同一窗口中打開鏈接
- 4. 如何在同一個窗口中打開2個不同的鏈接,並從一個鏈接打開另一個新窗口中的鏈接?
- 5. Markdown打開一個新窗口鏈接
- 6. 在同一窗口的新標籤頁中打開鏈接
- 7. 在同一個窗口中或在新的(標籤)中打開鏈接
- 8. ASP.NET控件在同一窗口中打開新的窗口intead
- 9. 的SharePoint:在同一個窗口中打開Word文檔鏈接
- 10. 在同一個窗口中打開框架內的鏈接
- 11. 打開一個新窗口中創建一個新的會話
- 12. 從子窗口或Ajax打開新窗口中的鏈接
- 13. jquery:如何在同一個窗口中打開外部鏈接
- 14. 用WebBrowser控件在同一個窗口中打開鏈接
- 15. 如何在同一個窗口中打開鏈接AS3
- 16. 如何打開不在同一個新窗口中的新窗口?
- 17. 停止重新打開同一窗口
- 18. 雙擊NSCollectionViewItem打開新窗口或在同一窗口中查看NSCollectionViewItem
- 19. Html在同一個新窗口中打開頁面上的多個鏈接
- 20. 用鏈接打開一個子窗口?
- 21. 打開一個新窗口
- 22. Popup在同一個窗口中打開,而不是新的彈出窗口
- 23. jquery對話框,在同一對話框窗口中打開鏈接
- 24. 如何在同一窗口中打開fancybox鏈接?
- 25. 在同一彈出窗口中打開href鏈接
- 26. 在同一模態窗口中打開鏈接
- 27. 鏈接在msi項目中打開另一個對話窗口
- 28. 打開一個與facebook窗口功能相同的JavaScript窗口
- 29. 在同一窗口中打開一個新頁面
- 30. aref鏈接在新窗口中打開
SHDocVw定義了什麼組合?至少在mshtml.dll中我找不到它。 – 2010-03-26 09:18:35