VB.NET Webbrowser Control
Inhaltsverzeichnis
- 1 VB.NET Webbrowser Control
- 2 Code
- 2.1 Seite öffnen
- 2.2 Seite bei Start laden – VB.NET Webbrowser Control
- 2.3 Aktualisieren
- 2.4 Vorwärts navigieren
- 2.5 Rückwärts navigieren
- 2.6 Scrollbalken – ScrollBarsEnabled
- 2.7 Kontextmenü – IsWebBrowserContextMenuEnabled
- 2.8 Seite fixieren – AllowNavigation
- 2.9 Tastenkombinationen – WebBrowserShortcutsEnabled
- 3 Style & Engine
- 4 Dokument – VB.NET Webbrowser Control
- 5 Kompletter Code – VB.NET Webbrowser Control
- 6 Downloads
VB.NET Webbrowser Control
In diesem Beitrag zeige ich Dir wichtige Eigenschaften und Funktionalitäten des VB.NET Webbrowser Control.
Von Zeit zu Zeit könnte es vorkommen, dass Du in deinem Programm auch mal einen Webbrowser darstellen und ggf. im Detail damit arbeiten musst.
Diese Arbeit kann unter anderem sein, dass Du den Quelltext einer Seite auslesen oder die Oberfläche automatisieren möchtest, das zeige ich auch im Beitrag „VB.NET Get Element By Class„.
Falls Du z. B. nur eine Webseite ohne eigenes Steuerelement öffnen möchtest, wirst Du in meinem VB.NET Webseite öffnen Beitrag fündig.
Code
Um mit dem VB.NET Webbrowser Control zu starten, ziehen wir es einfach aus der Toolbox auf die Form und starten durch 🤓.
In meinem ersten Beispiel stelle ich die Dock-Eigenschaft des Webbrowsers auf None, damit Dieser nicht die komplette Form einnimmt und ich noch für Buttons Platz habe.
Ebenso stelle ich die Eigenschaft ScriptErrorsSuppressed auf True, ansonsten bekommt man so gut wie auf jeder Seite hunderte Errors an den Kopf geschmissen.
Zu guter Letzt stelle ich den Namen des Webbrowsers auf „wb„, um nicht jedes Mal „Webbrowser1“ schreiben zu müssen.
Da es der einzige Webbrowser der Anwendung sein wird, sehe ich hier auch keinen Grund es – wie sonst immer – passend zu benennen, denn: „Was ist hier passend!?“.
Seite öffnen
Um mit dem VB.NET Webbrowser Control gezielt, also via URL zu navigieren, bzw. Ihn mehr oder weniger navigieren zu lassen, können wir dessen Navigate-Methode verwenden.
Dafür nehme ich das Beispiel aus dem Sample-Code, wo wir analog zu den gängigen Browsern aus einer Textbox heraus navigieren:
Private Sub btnGo_Click(sender As Object, e As EventArgs) Handles btnGo.Click wb.Navigate("https://google.de") End Sub
Seite bei Start laden – VB.NET Webbrowser Control
Wir können neben dem manuellen Navigieren auch schon bei Start der Form eine URL laden lassen.
Um den Browser schon bei Start eine Url laden zu lassen, setzen wir einfach im Designer die Url-Eigenschaft
Aktualisieren
Ähnlich wie in bekannten Webbrowsern, haben wir auch hier die Möglichkeit den Browser, bzw. dessen Seite mit Hilfe der Refresh-Methode zu aktualisieren.
In unserem Beispiel platziere ich den Aktualisierungs-Button – wie gängig – oben:
Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click wb.Refresh() End Sub
Der Webbrowser kann durch den Aufruf der „GoForward“-Methode vorwärts navigieren, aber um es sauber zu machen, müssen wir auch auf die passende Eigenschaft namens „CanGoForward“ achten.
Private Sub btnForward_Click(sender As Object, e As EventArgs) Handles btnForward.Click If wb.CanGoForward Then wb.GoForward() End If End Sub
Ähnlich wie beim navigieren nach vorn, verfahren wir auch hier, wir prüfen die „CanGoBack“-Eigenschaft und navigieren entsprechend.
Private Sub btnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click If wb.CanGoBack Then wb.GoBack() End If End Sub
Scrollbalken – ScrollBarsEnabled
Man kann in dem Webbrowser-Control auch die Scrollbalken kontrollieren indem man dafür die vorgesehene Eigenschaft namens „ScrollBarsEnabled“ entsprechend auf True, oder False stellt.
Da Webbrowser für gewöhnlich ein eigenes Kontextmenü haben, hat sich das .NET-Team auch hier für eine Konfigurationsmöglichkeit entschieden
Es handelt sich um die IsWebBrowserContextMenuEnabled-Eigenschaft, mit dessen Hilfe wir – wie der Name schon erraten lässt – das native Kontextmenü des Browsers aktivieren, oder deaktivieren können.
In gewissen Anwendungsfällen kann es vorkommen, dass man nach dem initialen Aufruf einer Webseite nicht möchte, dass zu einer anderen Seite navigiert werden kann.
Mit der AllowNavigation–Eigenschaft können wir vermeiden, dass andere Webseiten aufgerufen werden.
Tastenkombinationen – WebBrowserShortcutsEnabled
Die WebBrowserShortcutsEnabled-Eigenschaft legt fest, ob im Browser die Tastenkombinationen, bzw. die Tastenkürzel aktiviert, oder deaktiviert sind.
Style & Engine
Moderneres VB.NET Webbrowser Control
Nach einiger Zeit die Du mit dem Webbrowser verbracht hast, wirst Du Dich vermutlich fragen, ob es nicht auch eine schönere und modernere Variante für das Steuerelement gibt.
Zum Glück kann ich dich beruhigen, ja diese neuere und tollere Variante gibt es!
So können wir einerseits die Verarbeitung von Stylesheets verbessern, die Fehler die im alten Control häufiger auftreten reduzieren und vor allem Performance und Support optimieren.
Wie man ein alternatives Webbrowser-Control verwendet zeige ich Dir in einem anderen Beitrag.
Dokument – VB.NET Webbrowser Control
Wer ein wenig Erfahrung mit JavaScript hat wird sich eventuell fragen, ob man auch in VB.NET an das Document des Webbrowsers rankommen kann, kurze Antwort: „Ja, kann man!“.
Um an das Document des Browsers zu kommen, muss man einfach nur die Document-Eigenschaft des Browsers verwenden und kann dann einige gewohnte Funktionen wie getElementById() aus JavaScript verwenden.
Diese Funktionen sind insbesondere für die Automation des VB.NET Webbrowser Controls von Vorteil und können Dir so auf verschiedene Arten und Weisen einen Vorteil verschaffen z. B. für einen Login o. Ä.
Kompletter Code – VB.NET Webbrowser Control
Public Class Form1 Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click wb.Refresh() End Sub Private Sub btnGo_Click(sender As Object, e As EventArgs) Handles btnGo.Click wb.Navigate(tbUrl.Text) End Sub Private Sub btnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click If wb.CanGoBack Then wb.GoBack() End If End Sub Private Sub btnForward_Click(sender As Object, e As EventArgs) Handles btnForward.Click If wb.CanGoForward Then wb.GoForward() End If End Sub Private Sub tbUrl_KeyDown(sender As Object, e As KeyEventArgs) Handles tbUrl.KeyDown If e.KeyCode = Keys.Enter Then wb.Navigate(tbUrl.Text) End If End Sub End Class