Ich habe ein einfaches Windows-Formular, das unter anderem ein ListView
-Objekt namens list
enthält. Auf dem Formular kann mit einem Knopf die Liste beim Klicken mit list.Items.Clear()
geleert werden. Das funktioniert gut.
Jetzt habe ich eine separate Klasse Test
, deren Methode update()
für einige Ereignisse außerhalb des Formulars aufgerufen wird. Beim Erstellen des Formulars gebe ich einen Verweis auf die Liste mit der Methode SetList
. Im Debug-Modus wird update()
für die von mir ausgelösten Ereignisse aufgerufen und der Inhalt wird ausgeführt, aber meine Liste wird nicht gelöscht.
Warum ist das? Die Referenz ist richtig eingestellt, ich habe überprüft.
%Vor%Wenn ich meine Liste, die geändert wird, genauer anschaue, indem ich in update () Haltepunkte setzt, wird die Liste bereinigt und bleibt sauber. Es sieht wirklich so aus, als wäre es eine andere Liste, die geändert wird, aber ich habe nur eine und tue keine neue darauf ... ????
Verwenden Sie die folgende modifizierte Methode update
:
Wenn dies nicht funktioniert, ist es offensichtlich, dass Sie eine andere Instanz des list
-Objekts ändern. In diesem Fall ändern Sie vorübergehend die Deklaration des Objekts wie unten und sehen Sie, ob sich irgendetwas ändert. Wenn dies der Fall ist, müssen Sie Ihren Code überprüfen, um sicherzustellen, dass Sie die richtige Instanz der Liste löschen:
In meinem Fall verwende ich keine Datenbindungen, sondern füge Elemente mithilfe von Add () explizit in eine Schleife ein. Es schien mir, dass ListView.Clear()
und ListView.Items.Clear()
nicht funktionierten.
Stellt sich heraus ... die ListView wurde tatsächlich gelöscht, aber ich hatte die Eingabeliste nicht gelöscht, also löschte ich die ListView und löschte sie mit der zuvor geclearten Liste Artikel.
Manchmal sind es die einfachsten Dinge ... D'OH!