Open link in new TAB (WebBrowser-Steuerelement)
Weiß jemand, wie man auf einen link klicken in das WebBrowser-Steuerelement in einer WinForms-Anwendung und dann diesen link öffnen in einem neuen tab in meinem TabControl?
Habe ich gesucht, seit Monaten schon viele tutorials/Artikel/code-Beispiele, aber es scheint, als ob niemand jemals versucht hat, diese in C# vor.
Irgendwelche Ratschläge/Muster sind sehr geschätzt.
Danke.
Ich bin jemand, der Probleme mit ie öffnen wenn ich auf eine web-Seite link in meinem eigenen browser. Habe versucht alle oben aber kein Glück, die ersten Antworten von Robert, die ich Hinzugefügt ExtendedWebBrowser im design-Modus, aber ich bin noch immer der roten Linie darunter (InitialTabBrowser) auf der letzten Zeile des Codes, und die Warnung "InitialTabBroswer existiert nicht im aktuellen Kontext'. Mehr Tipps/Ratschläge wäre toll.
InformationsquelleAutor jay_t55 | 2009-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf Ihre Kommentare, ich verstehe, dass Sie wollen, um die Falle, die die "Öffnen In Neuem Fenster" Aktion für das WebBrowser-Steuerelement, und überschreiben Sie die Standard-Verhalten für das öffnen in einem neuen tab, in Ihrer Anwendung statt.
Erreichen diese zuverlässig zu erhalten, müssen Sie auf das NewWindow2-Ereignis, das macht ppDisp (einstellbarer Zeiger, um das WebBrowser-Steuerelement, öffnen wir das neue Fenster).
Alle anderen potenziellen gehackt zusammen-Lösungen (wie z.B. Beibringung der Letzte link durch den Benutzer ausgewählt, bevor der OpenWindow-Ereignis) nicht optimal sind und zum scheitern verurteilt sind in Ausnahmefällen.
Glücklicherweise, es ist eine (relativ) einfache Möglichkeit, dies zu erreichen, während immer noch mit dem System.Windows.Formen.WebBrowser-Steuerelement als Ausgangspunkt. Alles, was Sie tun müssen, ist, verlängern Sie den WebBrowser und greifen Sie das NewWindow2-Ereignis, während die öffentliche Zugriff auf die ActiveX-Instanz " (für die Weitergabe in ppDisp in neuen tabs). Dies getan wurde, vor, und Mauricio Rojas hat ein hervorragendes Beispiel mit einer kompletten Arbeiterklasse "ExtendedWebBrowser":
http://blogs.artinsoft.net/mrojas/archive/2008/09/18/newwindow2-events-in-the-c-webbrowsercontrol.aspx
Sobald Sie die ExtendedWebBrowser Klasse, alles, was Sie tun müssen, ist setup-Handler für das NewWindow2-und Punkt ppDisp zu einem browser in einem neuen tab. Hier ist ein Beispiel, das ich zusammen gestellt habe:
Nimmt TabControl-Steuerelement mit dem Namen "Tabs" und die anfängliche Tablette enthält untergeordnetes Steuerelement angedockt ExtendedWebBrowser mit dem Namen "InitialWebBrowser")
Vergessen Sie nicht, um die Registrierung der Ereignisse, wenn die tabs geschlossen!
Stellen Sie sicher, dass Ihre InitialWebBrowser ist der Typ "ExtendedWebBrowser" - Es sieht aus wie Sie sind immer noch mit dem "WebBrowser". Zum hinzufügen ExtendedWebBrowser, schauen Sie in Ihren Werkzeugkasten. Sie sollten sehen, es in Richtung der Oberseite mit einem kleinen ZAHNRAD-symbol daneben. Dies ist, was sollte man hinzufügen, um Ihr Formular im design-Modus für die InitialWebBrowser Kontrolle.
vielen Dank so viel für diesen Robert. Du warst so hilfreich. 🙂
Aus irgendeinem seltsamen Grund sind neue Fenster ist immer noch geöffnet, in den externen web-browser ist für mich, Ereignis, obwohl ich verwenden Sie ExtendedWebBrowser und mit NewWindow2-Ereignis zu erstellen, neue web-browser.
InformationsquelleAutor Robert Venables
Vielleicht können Sie überschreiben Sie die ContextMenu-für den "in Neuem Fenster Öffnen" button. Ich habe noch nie getan eine solche Sache vor. Viel Glück!
Danke sshow wenn ich es Schaffe poste ich code für alle incase Sie würde gerne wissen, wie ich habe noch nie jemanden gesehen, tun das überall auf der Website in c# vor...
InformationsquelleAutor sshow
Der folgende code funktioniert, befolgen Sie einfach die erste Antwort für die Erstellung der ExtendedWebBrowser Klasse.
Ich bin mit diesem, um eine neue Registerkarte öffnen es funktioniert aber auch auf öffnen Sie ein neues Fenster in Ihrem browser und nicht den IE.
Hoffe, es hilft.
InformationsquelleAutor Dev
Habe ich ein wenig Forschung zu diesem Thema und man nicht alles tun müssen, die COM-Sanitär, die in der ExtendedWebBrowser Klasse, als, dass der code bereits vorhanden ist im generierten Interop.SHDocVw. Als solche war ich in der Lage zu verwenden, die mehr natürlichen konstruieren unten, um zu abonnieren, das NewWindow2-Ereignis. In Visual Studio musste ich fügen Sie einen Verweis auf "Microsoft Internet Controls".
Bitte Lesen Sie http://bit.ly/IDWm5A für mehr info. Dies ist Seite #5 in der Serie, für ein vollständiges Verständnis, ich musste gehen Sie zurück und Lesen Sie auf den Seiten 3 -> 5.
InformationsquelleAutor eugen_nw
Sie einfach Abbrechen, das neue Fenster-Ereignis und kümmern sich um die navigation und tab-Zeug selber.
Hier eine voll funktionierende Beispiel. Dies setzt Voraus, Sie haben ein tabcontrol und mindestens 1 Registerkarte im Ort.
InformationsquelleAutor Alexander Ryan Baggett
Es ist keine Navigation mit der Tabulatortaste in den web-browser Steuern, dazu müssen Sie behandeln die Registerkarten selbst. Fügen Sie ein Register-Steuerelement über das web-browser-Steuerung, und erstellen Sie neue web-browser-Bedienelemente wenn neue tabs geöffnet werden. Fangen und Abbrechen, wenn der Benutzer öffnet in einem neuen Fenster, und öffnen Sie neue Registerkarten statt.
InformationsquelleAutor svinto