Fehler: Cannot Call Navigate()

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von VincentTB.

    Hab es mir angeguckt aber das Problem hat es bis jetzt nicht gelöst.


    EDIT://

    Eine Tab-Site funktioniert will ich aber eine neue hinzufügen kommt der Fehler.

    Mein Code für Das Hinzufügen eines neuen Tabs:

    VB.NET-Quellcode

    1. Public Sub CreateNewTab(ByVal url As String, ByVal TabControl As TabControl)
    2. Dim NewTab As New TabPage
    3. Dim NewBrowser As New GeckoTabBrowser
    4. NewBrowser.Tag = NewTab
    5. NewTab.Tag = NewBrowser
    6. TabControl1.TabPages.Add(NewTab)
    7. NewTab.Controls.Add(NewBrowser)
    8. NewBrowser.Dock = DockStyle.Fill
    9. NewBrowser.Navigate(url)
    10. End Sub


    Aufrufen:

    VB.NET-Quellcode

    1. Private Sub NeuerTabToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NeuerTabToolStripMenuItem.Click
    2. CreateNewTab("http://www.msdn.com", TabControl1)
    3. End Sub


    Klasse für GeckoTabBrowser:

    VB.NET-Quellcode

    1. Imports Skybound.Gecko
    2. Public Class GeckoTabBrowser
    3. Inherits Skybound.Gecko.GeckoWebBrowser
    4. Public Sub New()
    5. End Sub
    6. Private Sub GeckoTabBrowser_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
    7. End Sub
    8. Private Sub GeckoTabBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DocumentCompleted
    9. Dim TabPage As TabPage = Me.Tag
    10. TabPage.Text = DocumentTitle
    11. Form1.Cursor = Cursors.Default
    12. Form1.ComboBox1.Text = Me.Url.ToString
    13. End Sub
    14. Private Sub GeckoTabBrowser_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
    15. Navigate("http://www.msdn.com") 'Wenn ich das weglasse kommt ebenfalls ein Fehler
    16. End Sub
    17. Private Sub GeckoTabBrowser_Navigating(ByVal sender As Object, ByVal e As Skybound.Gecko.GeckoNavigatingEventArgs) Handles Me.Navigating
    18. Form1.Cursor = Cursors.WaitCursor
    19. End Sub
    20. End Class

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

    @iEi: Kann es sein, dass Du sdiese Funktion im Konstruktor vor InitializeComponents() aufrufst?
    InitializeComponents() muss der 1. Aufruf sein, da werden alle Contrrols instanziiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    iEi schrieb:

    Ich rufe sie in einer eigenen Klasse auf.
    Wo erfolgt dieser Aufruf?
    Ich denke einfach, der Aufruf erfolgt zeitlich vor der Instanziierung der Fernster-Controls, also zu früh.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die Controls müssen zuerst initialisiert sein bevor du mit ihnen arbeitest. Lasse den neuen Tab oder was auch immer laden und anschließend kannst du sie verwenden. Du kannst kein Control verwenden solange es nicht existiert. Hat deine Basisklasse GeckoWebBrowser einen Basiskonstruktor. Wann genau rufst du CreateNewTab? Tatsache ist, dass ein Control das davon abhängig ist noch nicht initialisiert ist.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Dann poste mal den Code vom Aufruf selbst und die Prozedur, die aufgerufen wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    OK, Gecko-Engine.
    Warum erstellst Du die Controls zur Laufzeit? Bei der Initialisierung fehlt noch was. Was, musst Du selbst rausktiegen, ich habe keinen Gecko.
    Mach es mal (temporär) im Designer und probier, ob es da geht. Wenn ja, musst Du Dir die Prozedur InitializeComponents() ansehen und von dort die Initialisierung abkupfern.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hat die Exception vll. eine Innerexption in welcher steht welches Control noch nicht initialisiert wurde? Ich bin leider alles andere als mit winforms vertraut. Und wenn das Programm gestartet ist, machst du da nicht automatisch schon den ersten Tab auf? Ist das wirklich der einzige Ort wo ein neuer Tab erstellt wird?


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Gibt es eine Innerexception? Ansonsten musste ab jetzt selbst suchen. Was der Fehler ist weißt du, finden musst du ihn selbst.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    iEi schrieb:

    before the window handle is created.
    Lies es, verstehe es und setze es um.
    Du schreibst den Code, wir sehen ihn nicht.
    Lass das den Designer machen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Oder schreibe in deine Haupform Public Sub New, drücke Enter und setzte einen Breakepoint zu InitializeComponent(). Dann immer F10 drücken und aufpassen, was passiert. Dann siehst du, von wo aus die Prozedur aufgerufen wurde.
    Mfg
    Vincent