Ho un semplice modulo di Windows contenente, tra gli altri componenti, un oggetto ListView
denominato list
. Nel modulo, un pulsante mi consente di svuotare l'elenco al clic con list.Items.Clear()
. Funziona beneSvuota un ListView
Ora ho una classe separata Test
, il cui metodo update()
viene chiamato su alcuni eventi esterni al modulo. Alla costruzione del modulo, ho passato un riferimento all'elenco usando il metodo SetList
. In modalità debug, viene richiamato lo update()
sugli eventi che si attivano e il relativo contenuto viene eseguito, ma il mio elenco non viene cancellato.
Perché è questo? Il riferimento è impostato correttamente, ho controllato.
class Test
{
private ListView list;
public void setList(ListView list)
{
this.list = list;
}
public void update()
{
this.list.Items.Clear();
}
}
quando guardo più da vicino la mia lista essere modificato inserendo punti di interruzione nel update(), la lista viene pulita e resta pulita. Sembra davvero che sia stata modificata un'altra lista, ma ne ho una sola e non ne faccio mai nessuna nuova ... ????
Se gli elementi associati tramite l'origine dati provano 'list.DataSource = null; list.DataBind(); ' – sll
la mia ipotesi sarebbe che non lo è. Aggiungo sempre tramite il metodo this.list.Items.Add – Jerome
Il 95% di probabilità con codice come questo è che stai cancellando il listview di un'altra istanza di modulo, una che non è visibile perché la hai creata con new invece di usare il istanza di forma visibile. –