[C#] ListView mit Checkboxes, ItemChecked-Event
Verfasst: 05.04.2012, 15:51
Hallo ich habe ein ListView, dessen Einträge eine CheckBox enthalten.
Es gibt 2 Buttons um entweder alle Items anzuhaken oder bei allen Items den Haken zu entfernen. Dabei wird über alle Items iteriert und item.Checked entsprechend auf true oder false gesetzt.
Darüber hinaus kann der Nutzer natürlich jedes Item manuell per Klick aktivieren bzw. deaktivieren.
Aus bestimmten Gründen muss ich nun bei jedem dieser Events prüfen ob alle Items, keine Items oder nur manche Items selektiert werden (egal welche, nur diese 3 Zustände).
Bei den beiden Buttons kann ich den Zustand ganz einfach setzen. Bei CheckAll setze ich den Zustand auf AlleMarkiert, bei UncheckAll entsprechend auf KeineMarkiert.
Wenn ich nun aber den Zustand auch nach einem manuellen Klick abfangen will wirds schwieriger. Ich habe dafür das Ereignis ItemChecked abgefangen und prüfe darin eben jenen Zustand (alle, keine oder manche markiert).
Soweit so gut. Das Problem ist nun aber, dass dieses Ereignis auch dann auftritt, wenn ich dem Checked-Wert eines Items einen Wert zuweise, was ich bei den Button-Events tue. Dadurch entspricht das alles nicht mehr dem gewünschten Verhalten.
Meine Idee wäre nun mit einem Flag zu arbeiten, aber das ist recht unschön, zumal das auch gefährlich ist, wenn weitere Events hinzukommen, die Items in der Liste markieren. Dann muss man immer an das Flag denken. Kann man das irgendwie elegant lösen?
Nochmal zum Verständnis. Ich brauche eine Art Event, die nur bei manuellem Häkchensetzen (oder -entfernen) eines Items auftritt, nicht jedoch bei der Zuweisung der Checked-Eigenschaft eines Items im Code. Oder aber einen anderen Lösungsansatz.
Es gibt 2 Buttons um entweder alle Items anzuhaken oder bei allen Items den Haken zu entfernen. Dabei wird über alle Items iteriert und item.Checked entsprechend auf true oder false gesetzt.
Darüber hinaus kann der Nutzer natürlich jedes Item manuell per Klick aktivieren bzw. deaktivieren.
Aus bestimmten Gründen muss ich nun bei jedem dieser Events prüfen ob alle Items, keine Items oder nur manche Items selektiert werden (egal welche, nur diese 3 Zustände).
Bei den beiden Buttons kann ich den Zustand ganz einfach setzen. Bei CheckAll setze ich den Zustand auf AlleMarkiert, bei UncheckAll entsprechend auf KeineMarkiert.
Wenn ich nun aber den Zustand auch nach einem manuellen Klick abfangen will wirds schwieriger. Ich habe dafür das Ereignis ItemChecked abgefangen und prüfe darin eben jenen Zustand (alle, keine oder manche markiert).
Soweit so gut. Das Problem ist nun aber, dass dieses Ereignis auch dann auftritt, wenn ich dem Checked-Wert eines Items einen Wert zuweise, was ich bei den Button-Events tue. Dadurch entspricht das alles nicht mehr dem gewünschten Verhalten.
Meine Idee wäre nun mit einem Flag zu arbeiten, aber das ist recht unschön, zumal das auch gefährlich ist, wenn weitere Events hinzukommen, die Items in der Liste markieren. Dann muss man immer an das Flag denken. Kann man das irgendwie elegant lösen?
Nochmal zum Verständnis. Ich brauche eine Art Event, die nur bei manuellem Häkchensetzen (oder -entfernen) eines Items auftritt, nicht jedoch bei der Zuweisung der Checked-Eigenschaft eines Items im Code. Oder aber einen anderen Lösungsansatz.