Webbrowser_Navigate stört Listbox_DoubleClick

  • VB.NET

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Outsider77.

    Webbrowser_Navigate stört Listbox_DoubleClick

    Hallo zusammen,

    ich habe auf einer Form unter anderem eine Listbox, die mit Artikel-Nummern befüllt wird. Beim SelectedIndex-Change werden mehrere Abfragen gestartet.
    Außerdem soll ein Webbrowser-Control zu einer bestimmten pdf-Datei navigieren und diese anzeigen.
    Wenn ich jetzt auf die Listbox doppel klicke, soll eine entsprechende Excel-Datei geöffnet werden. Leider wird natürlich vorher das Navigate des Webbrowsers ausgelöst
    und das DoubleClick-Event danach völlig ignoriert. Kennt jemand diese Problematik und eventuell eine Lösung dafür?

    Vielen Dank für die Hilfe!

    Grüße Outi
    Bitte poste einmal deinen Code, es ist schwer zu helfen wenn wir nicht wissen was du geschrieben hast.
    Falsdudichfragstwarumdudaslesenkannstobwohlalleszusammenstehtdannwirstdumerkendasdu
    eingehirnbesizt.
    Achja, eine MsgBox macht man mit MessageBox.show(....) und nicht MsgBox(....)
    Ich fasse zusammen, was ich verstanden habe:
    • z.B. 10 ListBox-Einträge
    • ListBox-Eintrag (SelectedIndex) ändern -> WebBrowser
    • Doppelklick auf ListBox-Eintrag -> Datei öffnen
    Auf Anhieb schnellste (ggf. nicht beste) Variante: Merk Dir, was der letzte SelectedIndex war. Wenn er sich im SelectedIndexChanged-Ereignis-Handler verändert, dann mach mit dem WebBrowser weiter. Ansonsten ignoriere die WebBrowser-Aktion, dann kannst Du ungestört im DoubleClick-EventHandler Excel starten.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    ― Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @VaporiZed sicher das dein Vorschlag funktioniert bzw. Eine Verbesserung herbei führt?

    Weil, ich vermute damit hat er das gleiche Ergebnis wie jetzt. Er muss erst nen Eintrag anklicken. Das Navigiert der Browser. Dann Doppelklick auf den gleichen Eintrag und die Datei öffnet sich.

    Das Problem ist doch, wenn er per Doppelklick auf nen anderen (als aktuell gewählt) Eintrag klickt. Dann feuert das IndexChanged Event bevor er den 2. Klick des Doppelklicks machen kann... Man müsste also hier nen Delay einbauen und warten, ob da nen Doppelklick kommt oder nen einfacher.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    So habe ich ihn verstanden. Und ausprobiert habe ich es auch. Ich sah, dass - auch wenn man beim gleichen Eintrag bleibt - ein Doppelklick das SelectedIndexChanged-Event auslöst. Und das wäre mit meiner Geschichte Geschichte.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    ― Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    VaporiZed schrieb:

    wenn man beim gleichen Eintrag bleibt - ein Doppelklick das SelectedIndexChanged-Event auslöst.
    Sicher? Weil das wäre aus meiner Sicht nen Fehler in VS. Das Event darf nur auslösen, wenn sich der Index ändert, nicht bei jedem Doppelklick... Muss ich morgen mal testen, wär doof wenn das so ist.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Habe eine ListBox mit 3 vorgefertigten Einträgen und folgenden Code

    VB.NET-Quellcode

    1. Public Class FrmMain
    2. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    3. ListBox1.Items.Add(ListBox1.SelectedIndex.ToString)
    4. End Sub
    5. End Class

    Nachdem ich einen Eintrag ausgewählt habe und immer auf denselben nen Klick oder Doppelklick (Surface, Touchpad) drauf mache, wird der o.g. Code ausgeführt.

    EDIT: Hab dazu was im MSDN gefunden. Ist wohl ein ärgerliches Überbleibsel des Grunddesigns.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    ― Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

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

    Kann deinen Link leider nicht öffnen, da muss man sich anmelden. Also, dann könnte @Outsider77 nen DataGridView. Damit dem müsste es ja sauber funktionieren.

    @VaporiZed Danke für die Recherche :)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Guten Morgen zusammen,

    zunächst mal danke für Eure Unterstützung!

    mrMo schrieb:

    Also, dann könnte @Outsider77 nen DataGridView. Damit dem müsste es ja sauber funktionieren.

    Das bezweifel ich natürlich nicht, wäre für meine Zwecke aber ungeeignet. Dann verzichte ich lieber auf das DoubleClick-Event und baue andere Möglichkeiten ein, die Excel-Files zu öffnen.
    Es sei denn, wir finden noch einen Workaround...
    Grüße und einen schönen Tag!
    Outi
    Nachtrag: das Webbrowser-Control befindet sich auf einem TabControl auf einer "hinteren" TabPage. Wenn das "Navigate" ausgelöst wird, ist diese TabPage nicht unbedingt aktiv.
    Ich könnte zwar das Navigate auch erst beim Wechsel der TabPages auslösen, dann würde beim SelectedIndexChange in der Listbox die neue PDF nicht mehr in den Webbrowser geladen.

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

    Outsider77 schrieb:

    wäre für meine Zwecke aber ungeeignet.

    Was kann denn die ListBox, was das DataGridView nicht kann?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    OK ich habe mich eventuell etwas falsch ausgedrückt. Ich brauche den vollen Funktions-Umfang eines DataGridView für meine Zwecke nicht unbedingt, eine Listbox ist völlig ausreichend.
    Allerdings bin ich natürlich nicht abgeneigt. über den Einsatz eines DGV nachzudenken, wenn ich dadurch mein Ziel auch erreichen könnte ;)

    Outsider77 schrieb:

    Allerdings bin ich natürlich nicht abgeneigt. über den Einsatz eines DGV nachzudenken, wenn ich dadurch mein Ziel auch erreichen könnte ;)
    Na dann, los Tiger ;)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ok, ganz kurzer Zwischeneinwurf für Dummys, da ich's noch nicht kapiere.
    Du hast ein TabControl. Auf einem der hinteren Seiten ist das WebBrowser-CE. Wo ist die ListBox? Soll das WB-CE seine Arbeit immer beim ListBox-SelectedIndexChanged-Ereignis machen machen oder nur, wenn jene TabPage aktiv ist? Oder immer nur dann, wenn die TabPage aktiviert wird? Oder erst, wenn die TabPage aktiv ist und dann SelectedIndexChanged gefeuert wird? Und soll mit dem Doppelklick immer Excel geöffnet werden oder (auch) nur unter bestimmten Vorraussetzungen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    ― Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Hi,
    also ich habe das TabControl nur der Übersicht wegen eingebaut, da ich bei jedem ListBox_SelectedIndexChanged sehr viele Informationen darstellen möchte. Unter anderem eben auf dem letzten Tab in einem WebBrowser-Control eine PDF. Die ListBox befindet sich auf der Form, die Informationen sollen bei jedem SelectedIndex_Changed aktualisiert werden, egal auf welchem Tab des TabControl man sich befindet. Der Doppelklick auf einen Eintrag der ListBox soll ebenfalls immer die zugehörige Excel-Datei öffnen, unabhängig vom aktiven Tab.

    Outsider77 schrieb:

    Es sei denn, wir finden noch einen Workaround...
    Den habe ich ja schon in Post#3 gegeben. Oder willst Du, dass man z.B. von ListBox-Eintrag 3 auf 5 per Doppelklick springen kann, sodass zwar Excel geöffnet wird, aber das WB-CE nicht aktiviert wird? Dann wird's schwierig, aber dazu hatte sich ja mrMo geäußert:

    mrMo schrieb:

    Man müsste also hier nen Delay einbauen und warten, ob da nen Doppelklick kommt oder nen einfacher.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    ― Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @VaporiZed
    Bitte entschuldige, Deinen Lösungsanssatz aus Post 3 hatte ich schon wieder völlig vergessen.
    Habs so umgesetzt und funktioniert. Auch wenn es sich jetzt eigentlich um einen Triple Click handelt, kann ich das akzeptieren.
    Vielen Dank dafür!
    Gruß