Listview - merkwürdiges Verhalten bei Checkboxen

  • VB.NET

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

    Listview - merkwürdiges Verhalten bei Checkboxen

    Hallo zusammen,

    ich sitze hier gerade vor einem Phänomen. Ich habe in einem Form ein Listview mit Checkboxen in der Detailansicht mit nur einer Spalte (quasi eine Liste von Dateinamen). Die Liste wird dynamisch zum Programmstart gefüllt, das Programm merkt sich auch, welche Items beim letzten Schliessen gechecked waren und setzt das Check-Flag beim nächsten Aufruf wieder. Zusätzlich setzt es die entsprechenden Items auf selektiert.
    Dann gibt es einen Button, der im onClick alle Checkboxen auf false setzt (aber nichts an der Selection ändert). Dabei sind jetzt zwei Phänomene, die ich nicht verstehe und nicht gebrauchen kann:

    1. Klicke ich auf den Button, verschwinden sowohl die Check-Markierung als auch die Selection-Markierung (aber nur die Sichtbarkeit der Selektion - ListViewSelectedItems enthält immer noch die Einträge), was so nicht programmiert ist:

    VB.NET-Quellcode

    1. If lvFiles.Items.Count > 0 Then
    2. For Each item As ListViewItem In lvFiles.Items
    3. item.Checked = False
    4. Next
    5. End If



    2. Wenn ich mehrere gecheckte Items vorher hatte, habe den Checkstatus über den Button geändert und checke danach manuell einen der vorher ausgewählten Einträge, sind wieder ALLE vorher ausgewählten Einträge gesetzt (und dazu dann wieder selektiert)

    Übersehe ich da irgendwas? Codetechnisch beeinflusse ich das Setzen der Checked-Markierung nur beim Programmstart bzw. im Form_Load ....

    Mit ratlosem Gruß ?(

    Caddy
    Aha, das hat schon mal geholfen - in Verbindung muss dann aber auch noch

    VB.NET-Quellcode

    1. listView1.Focus()
    angehängt werden, sonst ist die Selektion angegraut zu sehen. Klar, ich hab ja auch auf ein anderes Steuerelement geklickt :whistling: Vielen Dank für den Tip.

    Jetzt bleibt aber noch die Frage: Ich hatte vorher 2 Checkboxen angeklickt, danach über den Buttonklick und einer For Each-Schleife allen Listview-Items Checked = false gesetzt. Klicke ich danach wieder auf eine ehemals ausgewählte Checkbox, werden ALLE vorher ausgewählten Checkboxen wieder angekreuzt. Wenn ich das noch irgendwie wegbekommen könnte wäre es perfekt ...

    Edith meint: kann es sein dass das irgendwie mit "Selected" zusammenspielt? Die Selection verschwindet ja nicht nach dem Checked-Wechsel. Ich hab das gerade getestet und nach dem "Unchecken" einen weiteren Eintrag selektiert, danach wieder auf die Checkbox und schwupp - alle selektierten sind gechecked.

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

    Soweit so gut - das scheint eine Eigenart eines ListViews zu sein - sobald ich Checkboxen einfüge, werden bei einer Mehrfachauswahl und anschließendem Klick in eine Checkbox alle ausgewählten Einträge mitgechecked, zumindest im Framework 2.0. Ich habe das jetzt als "Feature" weitergegeben, danke für die Hilfe. Somit ist das hier erledigt :thumbsup: