Lors de l'utilisation du contrôle .NET WebBrowser, comment ouvrir un lien dans une nouvelle fenêtre en utilisant la même session (par exemple, ne pas démarrer une nouvelle session ASP.NET sur le serveur) ou comment capturer le nouvel événement window pour ouvrir l'URL dans le même contrôle WebBrowser?System.Windows.Forms.WebBrowser ouvrir des liens dans la même fenêtre ou dans une nouvelle fenêtre avec la même session
12
A
Répondre
19
Je viens de passer une heure à chercher la réponse, alors je pense que je publierais les résultats ici. Vous pouvez utiliser l'objet SHDocVwCtl.WebBrowser_V1 pour capturer l'événement NewWindow.
REMARQUE: Code de 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
nettoyé légèrement en version de la réponse de Greg. Il modifie le comportement du contrôle transmis au lieu de s'appuyer sur une variable globale. Utilisation:
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);
});
}
a encore besoin de la référence à% windir% \ system32 \ shdocvw.dll, bien sûr.
Questions connexes
- 1. Ouvrir une nouvelle fenêtre avec asp.net
- 2. Comment ouvrir une nouvelle fenêtre dans aspnet
- 3. Ouvrir dans une nouvelle fenêtre link dans un iframe
- 4. Comment ouvrir une séquence de petites fenêtres toujours dans la même fenêtre?
- 5. Ouvrir une page dans la même fenêtre de navigateur à partir de l'application winforms
- 6. Bookmarklet Dans une nouvelle fenêtre
- 7. Comment ouvrir une nouvelle fenêtre du navigateur
- 8. Charger une page dans la même fenêtre via javascript
- 9. Ouvrir une URL dans une nouvelle fenêtre Java
- 10. Actionscript pour ouvrir l'URL dans une nouvelle fenêtre ouvrir une nouvelle fenêtre, mais pas en plein écran
- 11. Cadre HTML Forcer une nouvelle fenêtre dans tous les liens
- 12. Comment ouvrir une fenêtre dans une session X11 différente?
- 13. Comment ouvrir une nouvelle fenêtre dans Google Gadget?
- 14. WebRequest multiple dans la même session
- 15. ne souhaite pas ouvrir une nouvelle fenêtre en flash
- 16. Comment forcer le contrôle du navigateur Web à toujours ouvrir la page Web dans la même fenêtre?
- 17. Comment puis-je forcer l'ouverture automatique des liens dans une nouvelle fenêtre?
- 18. Ouvrir le lien dans une nouvelle UIWebView?
- 19. Puis-je rediriger vers une nouvelle fenêtre?
- 20. IE8 se bloque après 302 dans une nouvelle fenêtre
- 21. Comment ouvrir une autre fenêtre
- 22. Comment ouvrir un lien dans un fichier PDF dans une nouvelle fenêtre?
- 23. Comment charger une page PHP dans la même fenêtre dans jQuery
- 24. Ouvrir la fenêtre Navigateur du programme Java
- 25. ASP Net - Comment ouvrir un formulaire dans une nouvelle fenêtre dans ASP.NET
- 26. Ouverture d'une nouvelle fenêtre dans WPF
- 27. Ouvrir une nouvelle fenêtre à partir de code-behind
- 28. Ouvrir une nouvelle fenêtre en utilisant php et afficher les données dans
- 29. WinForms WebBrowser Control: Forcer l'ouverture de tous les liens vers l'extérieur dans une nouvelle fenêtre (IE)
- 30. WPF C# UI: nouvelle fenêtre ou tabulation?
Dans quel assemblage SHDocVw est-il défini? Je ne le trouve pas dans mshtml.dll au moins. –
Je pense qu'il est situé à% windir% \ system32 \ shdocvw.dll –
Obejet est pas membre de webBrower1 qui est ce que je suis gettinf –