GeckoFX / dynamisch erstellte EventHandler

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

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    GeckoFX / dynamisch erstellte EventHandler

    Hay :)

    Ich bin gerade dabei eine Anwendung mit GeckoFX60 zu erstellen und bin leider auf ein Problem gestoßen.
    Ich generiere pro Tab ein neues Browsercontrol.


    VB.NET-Quellcode

    1. Dim page As New TabPage("Tab" & TabControl_Main.TabPages.Count.ToString)
    2. TabControl_Main.TabPages.Add(page)
    3. Dim browser As New GeckoWebBrowser
    4. page.Controls.Add(browser)
    5. browser.Dock = DockStyle.Fill


    Später kann ich dann die einzelnen Browsercontrols Tabbasiert so verwenden:

    VB.NET-Quellcode

    1. Dim browser As GeckoWebBrowser = TryCast(TabControl_Main.TabPages.Item(TabControl_Main.TabPages.Count - 1).Controls(0), GeckoWebBrowser)
    2. browser.Navigate("bla.de")


    Wie kann ich aber jetzt die Eventhandler dynamisch hinzufügen und verwenden?

    Oder gibt es da eine einfach Variable die abzufragen ist?
    Ich will einfach nur wissen ob der Gecko fertig mit dem laden der Seite ist.

    VB.NET-Quellcode

    1. ​GeckoWebBrowser.IsBusy


    gibt mir immer ein "False" aus, obwohl er noch am laden ist.

    mfg Fynn
    @Twerpyfie Willkommen zum ersten Post. ;)
    Generiere nicht pro Tab ein BrowserControl, sondern generiere Dir ein UserControl mit einem BrowserControl, einer TextBox, diversen Button, Labeln usw. und allen EventHandlern.
    Pro Tab fügst Du dann ein solch UserControl hinzu und feddich. :D
    Ansonsten ließe sich Dein Problem so lösen:

    VB.NET-Quellcode

    1. AddHandler BrowserInstanz.BrowserEvent, AddressOf BrowserEventHandler

    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!
    Hey @RodFromGermany,
    schön dich wieder zu sehen :) Danke für die schnelle Antwort :) Ich war hier angemeldet, nur seltsamerweise wurde dieser Account hier gelöscht. Ich kann mich dunkel erinnern, dass mal ausgemistet wurde- oder war es ein Serverumzug? Anyway.

    Das mit dem UserControl ist eigentlich ne super Lösung! Da kann ich ja dann den EventHandler nehmen und dort eine DocumentCompleted-Variable anlegen. Nur leider ist es nicht so einfach (oder überhaupt möglich?) ein Usercontrol mit GeckoFX zu erstellen.
    Dass man die EventHandler so anlegen kann weiss ich, aber es werden unvorhersehbar viele Tabs geöffnet.. d.h. Ich muss die Handler irgendwie dynamisch ansprechen.
    Ich stehe komplett auf dem Schlauch, ich weiss nicht wie ich das Problem angehen soll ^^

    Edit:

    Okay, es war doch nicht so schwer wie gedacht.

    VB.NET-Quellcode

    1. AddHandler browser.DocumentCompleted, AddressOf gfxCompleted
    2. Private Sub gfxCompleted(ByVal sender As System.Object, ByVal e As System.EventArgs)
    3. Dim selectedbrowser As GeckoWebBrowser = sender
    4. Form_Getty.ListBox_Main.Items.Add("Folgender Browser hat fertiggeladen: " & selectedbrowser.Name)
    5. End Sub


    Vielen Dank für die schnelle Hilfe!

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Twerpyfie“ ()

    @Twerpyfie Markus schmeißt alle paar Jahre alle User raus, die länger als Delta nix gemacht haben.
    ===
    Ich hab mal einen Download-Manager gebaut, da wurden pro Download in ein FlowLayoutPanel ein UserControl mit ner Progressbar und Labels angezeigt.
    Wenn ein Download fertig war, wurde das Control wieder rausgenommen.
    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!