Tabcontrol, Webbrowser Problem-->Frage

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Tabcontrol, Webbrowser Problem-->Frage

    Hallo!
    Ich hab da mal ne frage!
    Unzwar, wenn ich was in die Combobox eintippe, werde ich nicht navigiert!, was muss ich ändern, damit ich navigiert werde?

    VB.NET-Quellcode

    1. Dim CurrBrowser As WebBrowser
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. ' Alle Tabs entfernen
    4. Me.TabControl1.TabPages.Clear()
    5. AddTab("leere Seite", "about:blank")
    6. ' Jetzigen Browser auslesen
    7. GetCurrBrowser()
    8. End Sub
    9. Private Sub ComboBox1_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles ComboBox1.KeyDown
    10. ' Wenn ENTER gedrückt wird navigieren und zur
    11. ' ComoBox hinzufügen.
    12. If e.KeyCode = Keys.Enter Then
    13. CurrBrowser.Navigate(Me.ComboBox1.Text)
    14. Me.ComboBox1.Items.Add(Me.ComboBox1.Text)
    15. End If
    16. End Sub
    17. Private Sub TabPage1_TabIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.TabIndexChanged
    18. GetCurrBrowser()
    19. End Sub
    20. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    21. ' Tab hinzufügen siehe "Sub AddTab()"
    22. AddTab("leere Seite", "about:blank")
    23. End Sub
    24. Private Sub wb_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
    25. ' TabTitel in den Titel der Website ändern
    26. Me.TabControl1.SelectedTab.Text = CurrBrowser.DocumentTitle
    27. ' Wenn man zu "about:blank" navigiert wird der Titel zu "" geändert da
    28. ' es eine leere seite ist..
    29. If e.Url.AbsoluteUri = "about:blank" Then
    30. Me.TabControl1.SelectedTab.Text = "leere Seite"
    31. End If
    32. End Sub
    33. Private Sub wb_Navigating(ByVal sender As Object, ByVal e As WebBrowserNavigatingEventArgs)
    34. Me.TabControl1.SelectedTab.Text = "Laden ..."
    35. Me.ComboBox1.Text = CurrBrowser.Url.AbsoluteUri
    36. End Sub
    37. Private Sub wb_Navigated(ByVal sender As Object, ByVal e As WebBrowserNavigatedEventArgs)
    38. Me.ComboBox1.Text = CurrBrowser.Url.AbsoluteUri
    39. End Sub
    40. Sub AddTab(ByVal name As String, ByVal url As String)
    41. Dim tab As TabPage = New TabPage(name)
    42. Dim wb As WebBrowser = New WebBrowser
    43. ' Zur Seite "url" navigieren
    44. wb.Navigate(url)
    45. wb.Dock = DockStyle.Fill
    46. ' Den Browser zur TabPage hinzufügen
    47. tab.Controls.Add(wb)
    48. ' Einen EventHandler des WebBrowsers (DocumentCompleted & Navigating) hinzufügen
    49. AddHandler wb.DocumentCompleted, AddressOf wb_DocumentCompleted
    50. AddHandler wb.Navigating, AddressOf wb_Navigating
    51. AddHandler wb.Navigated, AddressOf wb_Navigated
    52. ' Tab zum TabControl hinzüfügen
    53. Me.TabControl1.TabPages.Add(tab)
    54. End Sub
    55. Sub GetCurrBrowser()
    56. ' CurrBrowser auf den Browser des ausgewählten Tabs setzen
    57. For Each wb As WebBrowser In Me.TabControl1.SelectedTab.Controls
    58. CurrBrowser = wb
    59. Exit For
    60. Next
    61. End Sub
    62. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    63. WebBrowser1.Navigate(ComboBox1.Text)
    64. End Sub


    Danke im Voraus


    Gruß

    jan1996

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

    Also 100 Zeilen schlecht strukturierten Code , ohne Kommentare und Einrückungen finde ich schon eine Zumutung. Was hältst Du davon mal Deinen Debugger zu benutzen und das ganze ab Combobox KeyDown Event mal per Einzelschritt durchgehst ?

    Und wenn das immer noch nicht funktioniert es nochmal sauber postest ?
    Soory, wegen dem Post und seiner mängel!

    @Kangaroo
    http:\\ fügt sich selber hinzu

    Habe den Fehler jetzt doch
    gefunden!
    Zeile 15-24 muss ich nochmal überarbeiten(löschen)

    Habe jetzt ein 2tes Problem!
    Wenn ich in einen Anderen Tab wechsele, und eine Url eingebe, steht in dem ausgewählten tab, laden, aber die website wird in dem ersten tab geladen!
    Was kann ich ändern?


    Gruß

    jan1996

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „jan1996“ ()

    Habe jetzt nen neuen code, der auch geht.
    Trotzdem danke!

    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 Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    12. Dim browse As New WebBrowser
    13. TabControl1.TabPages.Add(i, "leere Seite")
    14. TabControl1.SelectTab(i - 1)
    15. browse.Name = "wb"
    16. browse.Dock = DockStyle.Fill
    17. TabControl1.SelectedTab.Controls.Add(browse)
    18. i = i + 1
    19. End Sub
    20. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    21. CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(ComboBox1.Text)
    22. End Sub


    Gruß

    jan1996
    Das sieht doch schon erheblich(!) besser aus :)

    Ich weiss ja nicht was Dein Programm so tun soll, aber es scheint ja als ob Du dynamisch Tabs anlegst und (ebenfalls dynamisch) WebBrowser Controls mit DockStyle.Fill dort erzeugst. Was Du noch machen könntest, wäre
    - eine eigene abgeleitete WebBrowser Klasse definieren, die Du mit Adress- und Statusleisten ausstattest
    - mit addHandler die events des WebBrowsers abfängst und behandelst

    Die Events (i.e. Document.Completed) werden in Deinem Beispiel ja noch nicht erwähnt.

    Gruss