Khi sử dụng điều khiển .NET WebBrowser làm cách nào để bạn mở liên kết trong cửa sổ mới bằng cách sử dụng cùng một phiên (ví dụ: không bắt đầu một phiên ASP.NET mới trên máy chủ), hoặc làm cách nào để bạn nắm bắt sự kiện cửa sổ mới để mở URL trong cùng một điều khiển WebBrowser?System.Windows.Forms.WebBrowser mở liên kết trong cùng cửa sổ hoặc cửa sổ mới với cùng một phiên
12
A
Trả lời
19
Tôi chỉ mất một giờ để tìm câu trả lời, vì vậy tôi mặc dù tôi sẽ đăng kết quả ở đây. Bạn có thể sử dụng đối tượng SHDocVwCtl.WebBrowser_V1 để nắm bắt sự kiện NewWindow.
Chú ý: Mã từ 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
Hơi dọn dẹp phiên bản của câu trả lời của Greg. Nó thay đổi hành vi của điều khiển được truyền vào thay vì dựa vào một biến toàn cầu. Cách sử dụng:
InlinePopups(webBrowser1);
Code:
// 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);
});
}
Tuy nhiên cần tham chiếu đến% WINDIR% \ system32 \ shdocvw.dll, tất nhiên.
Các vấn đề liên quan
- 1. mở một liên kết trong một tab mới trong cùng một cửa sổ
- 2. Mở liên kết trong cửa sổ mới với Capybara
- 3. Mở tệp liên quan đến rails.vim trong cửa sổ mới
- 4. Làm cách nào để liên kết Wordpress 'Preview' mở trong cùng một cửa sổ?
- 5. Mở tệp mới trong cửa sổ gui mới hoặc bằng cách tách cửa sổ
- 6. Mở liên kết trong cửa sổ mới hoặc tập trung vào nó nếu đã mở
- 7. Mở liên kết trong Cửa sổ bật lên với Javascript
- 8. Mở URL SSRS trong Cửa sổ mới
- 9. Mở hình ảnh trong cửa sổ mới
- 10. Google CSE mở trong cửa sổ mới
- 11. JavaFX mở cửa sổ mới
- 12. Làm cách nào để chạy .exe nhưng vẫn ở trong cùng cửa sổ lệnh (không mở cửa sổ mới)?
- 13. Làm cách nào để thực thi liên kết emacs grep-find trong cùng một cửa sổ?
- 14. Bookmarklet Trong Cửa sổ mới
- 15. Eclipse: Mở trong Cửa sổ mới
- 16. Nút mở trong cửa sổ mới?
- 17. Làm cách nào để liên kết khóa để chuyển sang cửa sổ cuối cùng hoặc nếu không có ô, cửa sổ cuối cùng?
- 18. Tạo liên kết với Markdown (BlueCloth) mở trong cửa sổ mới
- 19. Tạo bất kỳ liên kết nào với .pdf mở trong cửa sổ mới bằng jQuery?
- 20. Mở phản hồi trên cửa sổ mới
- 21. XNA với Windows Forms - Mở cửa sổ mới
- 22. Cách mở tệp mới trong vim trong cửa sổ mới
- 23. HTML: cách buộc liên kết mở trong tab mới, không phải cửa sổ mới
- 24. Mediawiki mở liên kết bên ngoài trong một cửa sổ mới
- 25. LUÔN LUÔN trên cửa sổ trên cùng
- 26. Tạo một cửa sổ trên cùng bằng cách sử dụng tay cầm cửa sổ
- 27. Mở trang trong cửa sổ mới không có cửa sổ bật lên
- 28. mở cửa sổ mới bằng a4j: commandButton
- 29. Chạy Emacs trong cùng cửa sổ với dòng lệnh
- 30. Các liên kết trên cửa sổ?
Trong định dạng nào SHDocVw được xác định? Tôi không thể tìm thấy nó trong mshtml.dll ít nhất. –
Tôi nghĩ rằng nó nằm ở% WINDIR% \ system32 \ shdocvw.dll –
Obejet không phải là thành viên của webBrower1 đó là những gì tôi là gettinf –