Seitenname aus Webbrowser abfragen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Xylon.

    Seitenname aus Webbrowser abfragen

    Hallo alle zusammen, :D

    Für mein Projekt wollte ich gerne einen integrierten Browser bereitstellen, den ich nach Belieben anpassen kann. Ich habe dann zunächst ein TabControl auf die Form gepackt. Dann habe ich ein Benutzersteuerelement angelegt, um dort den Browser abzulegen. Ich benutze hierfür den GeckoFx Wrapper von Mozilla. Nun wollte ich einen "Neuer Tab hinzufügen" Button zu dem TabControl hinzufügen. Sobald darauf geklickt wird, soll eine bestimmte Seite geöffnet werden. Da ich hier noch ein paar Möglichkeiten wie z.B. Startseiten, Lesezeichen etc. hinzufügen wollte, nehme ich zunächst Google als Platzhalter sozusagen.
    Soweit funktioniert alles Perfekt, nur kann ich den Namen der Seite nicht abrufen und als neuen Namen für den ausgewählten Tab nehmen, und dann gleichzeitig ein eigenes Fenster in jedem Tab haben...

    Hier die globalen Deklarationen:

    Visual Basic-Quellcode

    1. Dim NewTabPage As New TabPage
    2. Dim Wbe As New WebBrowserEngine 'Das ist der Name des BSE


    Im Load Ereignis der Form wird die zweite TabPage hinzugefügt, das ist der "Neuer Tab hinzufügen" Button.

    Visual Basic-Quellcode

    1. Private Sub Browser_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. NewTabPage.Name = "AddNew"
    3. NewTabPage.Text = "+ New Tab"
    4. DotNetBarTabcontrol1.TabPages.Add(NewTabPage)
    5. End Sub


    Das ist der Code im Selected Ereignis von dem TabControl:

    Visual Basic-Quellcode

    1. Private Sub DnBTabSelected(sender As Object, e As EventArgs) Handles DotNetBarTabcontrol1.Selected
    2. Dim StartTab As New TabPage
    3. StartTab.Text = "Empty tab"
    4. If DotNetBarTabcontrol1.SelectedTab.Name = "AddNew" Then
    5. DotNetBarTabcontrol1.TabPages.Remove(NewTabPage)
    6. DotNetBarTabcontrol1.TabPages.Add(StartTab)
    7. DotNetBarTabcontrol1.TabPages.Add(NewTabPage)
    8. DotNetBarTabcontrol1.SelectedTab = StartTab
    9. DotNetBarTabcontrol1.TabPages(StartTab.Name).Controls.Add(Wbe) 'Das Control wird nur in jeden neuen Tab verschoben
    10. Wbe.GeckoWebBrowser1.Navigate("https://www.google.de/?gws_rd=ssl")
    11. AddHandler Wbe.GeckoWebBrowser1.DocumentCompleted, AddressOf SetName
    12. DotNetBarTabcontrol1.SelectedTab.Text = "Connecting..."
    13. End Sub


    Das ist der Teil der gut funktioniert. Jetzt möchte ich aber den Seitennamen als Text für den ausgewählten Tab anzeigen lassen, dafür der Handler. Das ist der Sub der aufgerufen wird:

    Visual Basic-Quellcode

    1. Sub SetName()
    2. DotNetBarTabcontrol1.SelectedTab.Text = Wbe.GeckoWebBrowser1.DocumentTitle.ToString
    3. End Sub


    Wenn ich den Browser nicht global sondern im Selected Ergeignis deklariere wird natürlich in jedem Tab ein eigenes Fenster bereitgestellt, nur kann ich dann nicht den Titel der Seite abfragen. Ich hoffe ich konnte mein Problem gut und verständlich schildern, und ich würde mich freuen, wenn jemand eine Idee hätte wie ich das bewerkstelligen könnte. Ich arbeite nicht oft mit Webbrowsern und co., daher vermute ich mal das die Lösung wie immer ganz simpel ist. X/

    Bis dahin danke und viele Grüße ^^
    Nach einiger Zeit des herumprobierens habe ich nun doch eine Lösung gefunden. Falls jemand das gleiche Problem haben sollte, hier eine Möglichkeit:

    Man deklariere das BSE global, natürlich ohne "New", da man das Control dem anderen zuweisen, und nicht neu erstellen möchte.

    Visual Basic-Quellcode

    1. Dim wbe As WebBrowserEngine


    Und dann einfach das Steuerelement übergeben. Das muss geschehen, bevor man dem DocumentLoaded Ereignis den Sub zuweist.

    Visual Basic-Quellcode

    1. wbe = gfx


    Als kleiner Nebentipp: Wenn man nun eine Textbox hinzufügt, um eine neue Seite zu Laden (Adressleiste), kann man die Selbe Variable benutzen. So wird die Seite auch immer in dem Fenster des jeweils ausgewählten Tabs geöffnet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Xylon“ ()