WebBrowser Dokument titel bei tabs

  • VB.NET

Es gibt 43 Antworten in diesem Thema. Der letzte Beitrag () ist von jan1996.

    WebBrowser Dokument titel bei tabs

    Hallo!

    Normal ruft man ja so den den Dokumenten Titel auf:

    VB.NET-Quellcode

    1. Private Sub webBrowser1_DocumentTitleChanged(ByVal sender As Object, ByVal e As EventArgs)Handles webBrowser1.DocumentTitleChanged
    2. Me.Text = webBrowser1.DocumentTitle
    3. End Sub

    So jetzt habe ich mir nen Tab control hinzugefügt.

    VB.NET-Quellcode

    1. Dim browser As New WebBrowser
    2. TabControl1.TabPages.Add(i, "leere Seite")
    3. TabControl1.SelectTab(i - 1)
    4. browser.Name = "wb"
    5. browser.Dock = DockStyle.Fill
    6. TabControl1.SelectedTab.Controls.Add(browser)
    7. i = i + 1



    Frage: Wie lässt sich dort der dokumententitel automatisch auslesen??

    Danke im Voraus!


    Gruß

    jan1996
    Danke erstmal, hat mir aber nicht weiter geholfen :(

    Unzwar ist es so!
    Ich habe ja, (siehe 1ter post) nen tab(s) mit webbrowsern erstellt.

    Nun soll vom ausgewählten Tab, der Dokumentname automatisch zu Me.text werden!

    Manuel bekomme ich dies ja hin, aber nicht automatisch :(

    manuel:

    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. Me.Text = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).DocumentTitle
    3. End Sub



    Gruß


    jan1996
    Wie automatisch?
    du kannst diese Zeile ja ins TabControl_SelectedIndexChanged Event laden (Diese Event musst du aber manuell deklarieren!)

    VB.NET-Quellcode

    1. Private sub TabControl_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles TabControl1.SelectedIndexchanged
    2. Me.Text = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).DocumentTitle
    3. End Sub



    Gruss
    Pascal
    Auf die Idee bin ich auch schon gekommen, aber das läuft immer auf folgendes hinaus:

    Fehlermeldung: "Der Index 0 liegt außerhalb des Bereichs. Parametername: index"

    Hier, könnt ja mal selber testen!

    VB.NET-Quellcode

    1. Dim i As Integer = 1
    2. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    3. Dim browse As New WebBrowser
    4. TabControl1.TabPages.Add(i, "leere Seite")
    5. TabControl1.SelectTab(i - 1)
    6. browse.Name = "wb"
    7. browse.Dock = DockStyle.Fill
    8. TabControl1.SelectedTab.Controls.Add(browse)
    9. i = i + 1
    10. End Sub
    11. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    12. CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(ComboBox1.Text)
    13. End Sub


    Gruß

    jan1996
    Ja dann ist halt Control.Item(0) ungültig.
    Du könntest ja alle Controls auf der TabPage durchlaufne und wenn es sich um einen Webbrowser handelt (Es sollte ja pro TabPage nur einer sein), kannst du den Titel anzeigen:

    VB.NET-Quellcode

    1. Private sub TabControl_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles TabControl1.SelectedIndexchanged
    2. For Each ctrl As Control In TabControl1.SelectedTab.Controls
    3. If TypeOf ctrl Is WebBrowser Then
    4. Me.Text = CType(ctrl, WebBrowser).DocumentTitle
    5. End If
    6. Next
    7. End Sub



    Gruss
    Pascal
    Wenn das Webbrowser-Steuerelement immer in einer TabPage ist, kann man mit Hilfe von Parent auf TabPage zugreifen
    So 'was in der Art:

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_DocumentTitleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles WebBrowser1.DocumentTitleChanged
    2. CType(DirectCast(sender, WebBrowser).Parent, TabPage).Text = DirectCast(sender, WebBrowser).DocumentTitle
    3. End Sub
    Das Problem ist, dass bei deinem Code nur von einem WebBrowser (WebBrowser1) ausgegangen wird. Tatsächlich hat er aber undefiniert viele (nämlich so viele, wie es TabPages hat). Da nützt es nichts, wnen du im Event eines fixen WebBrowser-Controls den Sender herausfinden willst. Denn der wird immer WebBrowser1 sein, weil du ja nur ein Handles definiert hast (Handles WebBrowser1.DocumentTitlechanged)
    Also muss er zuerst herausfinden, welcher WebBrowser überhaupt betroffen ist. Wie das geht, habe ich ihm in meinem vorherigen Post erklärt.


    Gruss
    Pascal
    Das kann man doch mit AddHandler erledigen, wenn man die WebBrowser dynamisch hinzufügt.
    So ungefähr ...

    VB.NET-Quellcode

    1. Private Sub AddWebBrowserTabPageTo(ByVal tabCtrl As TabControl, ByVal url As String)
    2. Dim tp As New TabPage
    3. Dim wb As New WebBrowser
    4. wb.Dock = DockStyle.Fill
    5. tp.Controls.Add(wb)
    6. tabCtrl.TabPages.Add(tp)
    7. AddHandler wb.DocumentTitleChanged, AddressOf wb_DocumentTitleChanged
    8. wb.Navigate(url)
    9. End Sub
    10. Private Sub wb_DocumentTitleChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    11. CType(DirectCast(sender, WebBrowser).Parent, TabPage).Text = DirectCast(sender, WebBrowser).DocumentTitle
    12. End Sub
    Es wird auch der Text der TabPage und nicht der der Form geändert ;)
    Zudem passiert das bei aktuellem Code nur, wenn du die TabPage wechselst. Du müsstest noch im Form_Load Ereignis den Code einfügen, dass der aktuelle Website-Titel übernommen wird.


    Gruss
    Pascal
    Also bei mir geht es Wunderbar...
    Ich habe ein TabControl genommen und da wird der Text immer geändert...

    VB.NET-Quellcode

    1. Private Sub AddWebBrowserTabPageTo(ByVal tabCtrl As TabControl, ByVal url As String)
    2. Dim tp As New TabPage
    3. Dim wb As New WebBrowser
    4. wb.Dock = DockStyle.Fill
    5. tp.Controls.Add(wb)
    6. tabCtrl.TabPages.Add(tp)
    7. AddHandler wb.DocumentTitleChanged, AddressOf wb_DocumentTitleChanged
    8. wb.Navigate(url)
    9. End Sub
    10. Private Sub wb_DocumentTitleChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    11. CType(DirectCast(sender, WebBrowser).Parent, TabPage).Text = DirectCast(sender, WebBrowser).DocumentTitle
    12. End Sub
    13. Private Sub NeuesTab_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    14. AddWebBrowserTabPageTo(TabControl1, TextBox1.Text)
    15. End Sub
    16. Private Sub LadeSeite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    17. DirectCast(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(TextBox1.Text)
    18. End Sub



    Gruss
    Pascal