... oder sind C# Listviews wirklich so ein Albtraum zu verwalten?Fehle ich etwas mit meiner ListView Auswahl Ereignisbehandlung
Okay, das Problem, an dem ich arbeite, ist sehr einfach. Oder zumindest scheint es so zu sein:
Ich habe eine Textdatei, die Informationen über Kundenaufträge in separaten Zeilen enthält. Die Datenelemente sind durch Semikolons getrennt.
Meine Form iteriert durch diese Befehle, fügt die Iteminformationen in Hashtabellen ein und fügt jede Hashtabelle in eine Masterhashtabelle ein. Einige zusammengefasste Informationen zu jeder Bestellung (Produkt/Bestellnummer/Kundenname/Kundennummer) werden in meiner Listenansicht durch sortierbare Spalten angezeigt. Unterhalb der Listenansicht befindet sich ein Tab-Steuerelement mit Textfeldern für die bearbeitbaren Teile der Auftragsdetails, die auf drei Registerkarten verteilt sind.
Hier ist, was ich würde passieren mag:
- Benutzer klickt auf einzelnen Eintrag: Registerkarte Textfelder ausfüllen mit Bestelldetails.
- Der Benutzer bearbeitet Details in der Registerkarte Steuerung.
- Benutzer klickt auf einen anderen Auftrag: Bestätigungsmeldung prüft, ob die Änderung festgeschrieben werden soll, wenn "Ja", dann sollten die Details in der relevanten Hashtable und der Anzeige in den Listview-Aktualisierungen gespeichert werden.
- Der Benutzer wählt mehrere Listenansichtselemente aus: Das oberste Element sollte im Registerkartensteuerelement bearbeitet werden können.
- Der Benutzer drückt am oberen Rand des Formulars die Schaltfläche "Objekt (e) entfernen": Die Objekte werden aus der Hashtabelle entfernt und das ListView-Steuerelement wird aktualisiert, um das Löschen wiederzugeben. Die Textfelder sind alle über das Registersteuerelement zurückgesetzt.
Dies scheint mir ziemlich normal und vernünftiges Verhalten. Ich vermutete, dass die Verwendung des SelectedIndexChanged-Ereignisses die Möglichkeiten bieten würde, die Daten zu verarbeiten. Das Ereignis wird jedoch zweimal bei jeder Auswahl/Abwahl ausgelöst und es ist nicht immer klar, welche Elemente in der Listenansicht an welchem Punkt aktualisiert werden sollen.
Der Code, um zu testen, welche Art von "Auswahl/Abwahl" gerade stattgefunden hat und zu entscheiden, welche Maßnahmen so ergriffen werden sollten, beginnt ziemlich lang zu werden und ich frage mich nur, ob ich die Dinge zu kompliziert mache.
So:
- Gibt es eine andere Veranstaltung, die ich meine Funktionalität Ziele nutzen könnten zu erreichen? Oder
- Gibt es etwas über das SelectedIndexChanged-Ereignis, das ich nicht weiß, das dem Programm helfen würde zu entscheiden, was es an einem bestimmten Punkt tun sollte? Oder
- Gehe ich gerade in die falsche Richtung?
Irgendwelche Vorschläge, auch solche über das Redesign meines Formulars wären sehr willkommen.
EDIT: Beim Versuch, dieses Problem aus einem anderen Blickwinkel anzugreifen, ändere ich meine Master-Hashtable auf eine sortierte Liste. Der Rest des Problems bleibt gleich.
ist das WPF oder Winforms? – Gishu