VB.NET Webbrowser Control

VB.NET Webbrowser Control
VB.NET Webbrowser Control

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 „Webbrowser1schreiben 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

Vorwärts navigieren

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

Rückwärts navigieren

Ä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.

Kontextmenü – IsWebBrowserContextMenuEnabled

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.

Seite fixieren – AllowNavigation

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 AllowNavigationEigenschaft 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

Downloads

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert