TreeView CheckBox-Problem

  • VB.NET
  • .NET (FX) 4.0

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Ruzbacky.

    TreeView CheckBox-Problem

    Moin moin,

    ich habe mal eine Frage bezüglich der CheckBoxen eines TreeViews.

    Sobald ich einen Doppelklick auf die CheckBox (eines "gecheckten") mache, wird diese zwar wieder als "Checked" angezeigt. Wenn ich mir allerdings den Status (Checked/<> Checked) ausgeben lasse, wird diese als <> Checked angegeben. Sprich auf der Oberfläche ist diese angekreuzt, im Backend allerdings nicht so gewertet. Ist das irgendwie ein Bug von VB?

    Mit freundlichen Grüßen
    Xen

    Xen schrieb:

    Doppelklick
    Ist natürlich interessant.
    Möglicherweise ist das ein Framework-Fehler, denn die Dinger sollen ja auf Klick reagieren, nicht aber auf Doppelklick.
    Muss ich mal testen.
    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!

    RodFromGermany schrieb:

    ..., denn die Dinger sollen ja auf Klick reagieren, nicht aber auf Doppelklick.

    Ja eigentlich schon, aber das dürfte eigentlich trotzdem nicht passieren..

    RodFromGermany schrieb:

    Muss ich mal testen.

    Danke dir!

    __

    Aber es gibt auch keine Möglichkeit von .NET selber RadioButtons statt CheckBoxen zu benutzen, oder?
    @Xen Kannst Du mal fix den relevanten Code posten?
    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!

    Xen schrieb:

    die Funktion
    wo Du den Check-State abfragst.
    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!
    @Xen Es sieht so aus, als hättest Du da einen .NET-Bug gefunden.
    Ich hab mal ne Form gemacht mit nem TreeView, einem Parent und einem Child und hab deen CheckState mit nem Timer abgefragt. Das reproduziert Deinen Effekt vollständig.

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Dim TreeNode1 = TreeView1.Nodes(0)
    3. Dim TreeNode2 = TreeView1.Nodes(0).Nodes(0)
    4. Label1.Text = String.Format("{0} {1}", TreeNode1.Name, TreeNode1.Checked)
    5. Label2.Text = String.Format("{0} {1}", TreeNode2.Name, TreeNode2.Checked)
    6. End Sub

    Ich empfehle Dir, diesen Effekt an Microsoft zu melden. :thumbup:
    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!
    Hallo,

    ​hat hierzu zufälligerweise einer eine Lösung um das Problem zu beheben, bzw. dies zu umgehen?

    ​Ich habe ein Programm, wobei der Nutzer mit vielen verschiedenen Dokumenten arbeiten kann/muss. Hier habe ich eine Funktion implementiert, die es dem Nutzer erlaubt einen ganzen Stapel an Dokumenten auf einmal zu speichern.
    ​Hierzu wir ein neues Form geöffnet und in einem TreeView alle derzeit verfügbaren Dokumente aufgelistet. Über die Checkboxen der einzelnen Nodes kann der Nutzer dann auswählen, welche Dokumente er speichern möchte.
    ​Beim Klick auf "OK" wird von der Form eine List(of ...) an die Hauptform zurückgegeben, in welcher alle ausgewählten Dokumente enthalten sind. Diese werden dann abgearbeitet und gespeichert.

    ​Das ganze funktioniert auch ganz hervorragend, bis auf die Tatsache, das manchmal Dokumente in der List(of ...) enthalten sind, die gar nicht gecheckt waren und umgedreht, es fehlen Dokumente die gecheckt waren.

    ​Jetzt ist hier auf jeden Fall schon mal klar geworden woran es liegt... Jetzt fehlt mir nur eine gute Idee um das Problem zu umschiffen.
    @Ruzbacky Hier wäre eine CheckedListBox angebracht. msdn.microsoft.com/de-de/libra…kedlistbox(v=vs.110).aspx
    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!

    RodFromGermany schrieb:

    Hier wäre eine CheckedListBox angebracht

    ​Das wäre in meinem jetzigen Fall durchaus verwendbar, da ich keine verschachtelte Struktur habe und sich somit alle Dokumente auf der obersten Ebene befinden.
    ​Es wäre aber in weiteren Ausbaustufen durchaus denkbar, das gewisse Dokumente untergeordnete Dokumente besitzen. Hier wäre dann die ChildNodes des TreeView zu gebrauchen.
    ​Soweit ich das bis jetzt überblicke ist diese Funktionalität bei der CheckedListBox nicht gegeben.

    ​Da die CheckedListBox jedoch für meine derzeitige Belange ausreichend ist, werde ich diese vorerst nutzen.