TreeView Checked - selektiert Subtree - aber Fehler bei DoubleClick

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

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

    TreeView Checked - selektiert Subtree - aber Fehler bei DoubleClick

    Hallo,
    Ich benutze eine TreeView und den Code von Microsoft um beim "checken" eines Nodes, dessen Subnodes zu de/selektieren.
    Siehe: msdn.microsoft.com/de-de/library/system.windows.forms.treeview.aftercheck

    Das klappt prima, aber leider kommt es aber bei einem Doubleclick auf einen Node zu einem Zustand den ich verhindern möchte. Siehe Bild.

    Mit diesem Code habe ich es versucht, klappt aber nicht:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub TreeView1_BeforeCheck(sender As Object, e As TreeViewCancelEventArgs) Handles TreeView1.BeforeCheck
    2. If isDoubleClicked Then
    3. e.Cancel = True
    4. isDoubleClicked = False
    5. End If
    6. End Sub
    7. Private isDoubleClicked As Boolean = False
    8. Private Sub TreeView1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles TreeView1.MouseDoubleClick
    9. isDoubleClicked = True
    10. End Sub



    Hat jemand eine Idee?
    Bilder
    • treeview-dblclk.png

      2,96 kB, 236×59, 121 mal angesehen

    Hinti schrieb:

    klappt aber nicht
    Was klappt nicht?
    Wie lautet die Fehlermeldung?
    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!
    okay,...

    Wie ihr im Bild sehen könnt, ist der Node mit dem Text "BOM" durch den doppelcklick deselektiert worden, ohne dass der Subtree den selben Status angenommen hat. Soll heißen, wenn ich normal klicke, funktioniert der Code von Microsoft perfekt. Ein klick auf auf einen Node selektiert oder deselektiert alle Subnodes. Bei einem Doubelick darauf verfälscht es sich, und Subnodes haben eben einen anderen Checked-State!

    Mit dem doppelcklick Variable setzen wollte ich im BeforeChecked den Event Canceln. Aber das funktioniert bei weitem nicht perfekt. Eigentlich total unkontrolliert.
    Kann es sein, dass das ein Framework-Fehler ist und da 2 Einzelklicks an die Childs gesendet werden?
    Mach da mal ein paar Testausgaben rein.
    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!