beckslevel91
Goto Top

VB 2008 - WebBrowser mit Tabs

Hey Leute, ich habe ein Problem, dass mich fast zur Verzweiflung treibt...

ich benutze VB 2008 Express und möchte einen Webbrowser schreiben. Nun bin ich schon sehr weit. Jetzt will ich eine "Tab-Funktion" einbauen und habe auch schon einen Code, der mir das ermöglicht:

Public Class Form1

    Dim CurrBrowser As WebBrowser


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' Alle Tabs entfernen  
        Me.TabControl1.TabPages.Clear()
        AddTab("Neuer Tab...", "about:blank")  

        ' Jetzigen Browser auslesen  
        GetCurrBrowser()

    End Sub

    Private Sub ComboBox1_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles ComboBox1.KeyDown

        ' Wenn ENTER gedrückt wird navigieren und zur  
        ' ComoBox hinzufügen.  
        If e.KeyCode = Keys.Enter Then
            CurrBrowser.Navigate(Me.ComboBox1.Text)
            Me.ComboBox1.Items.Add(Me.ComboBox1.Text)
        End If

    End Sub

    Private Sub TabPage1_TabIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.TabIndexChanged
        GetCurrBrowser()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' Tab hinzufügen siehe "Sub AddTab()"  
        AddTab("Neuer Tab...", "about:blank")  

    End Sub

    Private Sub wb_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)

        ' TabTitel in den Titel der Website ändern  
        Me.TabControl1.SelectedTab.Text = CurrBrowser.DocumentTitle

        ' Wenn man zu "about:blank" navigiert wird der Titel zu "" geändert da  
        ' es eine leere seite ist..  
        If e.Url.AbsoluteUri = "about:blank" Then  
            Me.TabControl1.SelectedTab.Text = "Neuer Tab..."  
        End If

    End Sub

    Private Sub wb_Navigating(ByVal sender As Object, ByVal e As WebBrowserNavigatingEventArgs)

        ' Während die Seite geladen wird "Laden ..." als Titel verwenden (macht einen kleinen Eindruck)  :P  
        Me.TabControl1.SelectedTab.Text = "Laden ..."  
        Me.ComboBox1.Text = CurrBrowser.Url.AbsoluteUri

    End Sub

    Private Sub wb_Navigated(ByVal sender As Object, ByVal e As WebBrowserNavigatedEventArgs)

        ' Text in ComboBox zum absoluten URI ändern.. Sprich wenn du www.google.de oder  
        ' google.de ein giebst -> http://www.google.de/    ;)  
        ' Hier kannst du auch das  "Me.ComboBox1.Items.Add(Me.ComboBox1.Text)" hin  
        ' verschieben statt gleich nach ENTER (oben) wird dan der komplette URI   
        ' zur Liste hinzugefügt  :D  

        Me.ComboBox1.Text = CurrBrowser.Url.AbsoluteUri

    End Sub

    Sub AddTab(ByVal name As String, ByVal url As String)

        Dim tab As TabPage = New TabPage(name)
        Dim wb As WebBrowser = New WebBrowser

        ' Zur Seite "url" navigieren  
        wb.Navigate(url)
        wb.Dock = DockStyle.Fill

        ' Den Browser zur TabPage hinzufügen  
        tab.Controls.Add(wb)

        ' Einen EventHandler des WebBrowsers (DocumentCompleted & Navigating) hinzufügen  
        AddHandler wb.DocumentCompleted, AddressOf wb_DocumentCompleted
        AddHandler wb.Navigating, AddressOf wb_Navigating
        AddHandler wb.Navigated, AddressOf wb_Navigated

        ' Tab zum TabControl hinzüfügen  
        Me.TabControl1.TabPages.Add(tab)

    End Sub

    Sub GetCurrBrowser()

        ' CurrBrowser auf den Browser des ausgewählten Tabs setzen  
        For Each wb As WebBrowser In Me.TabControl1.SelectedTab.Controls
            CurrBrowser = wb
            Exit For
        Next

    End Sub
End Class

( http://www.vb-magazin.de/forums/forums/t/4428.aspx )

Das mit den neuen Tabs funktioniert soweit, aber wenn ich dann eine url eingebe zeigt er im Titel des bspw. 2. Tabs den Titel an, die Webseite allerdings wird im Tab1 angezeigt, egal in welchem Tab ich eine Webseite öffnen will, diese wird immer im ersten Tab angezeigt..

Weiß jemand woran das liegt?

MfG,

J.R.

Content-Key: 116835

Url: https://administrator.de/contentid/116835

Printed on: April 19, 2024 at 10:04 o'clock

Member: godlie
godlie May 26, 2009 at 14:47:18 (UTC)
Goto Top
Hallo,

dein Fehler liegt wahrscheinlich in der FKT GetCurrBrowser, könnte ich mir denken.
Ich würde hier eher über eine Variable in der Klasse arbeiten, welche ich bei:
Private Sub TabPage1_TabIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

auf den sender binde.

Aber jetzt mal ehrlich warum tust du dir das an?
Schon mal über Threads was gehört? Das laden der Webseiten würd ich immer in nen Thread Packen damit der Krempel sich mit anderen Dingen derweilen
austoben kann.
Was für ne Auslastung auf dem PC kreigt den dieser Webbrowser so, wenn sagen wir 4 Flash Sites + Webradio + Chat am laufen ist?

grüße