Domanda

Ho un ListView che a volte ho bisogno di inserire circa 10000 oggetti. ListViews non lo gestisce davvero bene, e si bloccano per un paio di secondi mentre ordinano gli oggetti e li disegnano. Se aggiungi gli elementi singolarmente, è anche peggio, rinchiudendoli per quasi un minuto.

Per aggirare il problema, ho pensato di provare a popolare ListView prima di doverlo visualizzare, ma sfortunatamente ha altre idee. Inizia a disegnare solo quando giro il pannello che contiene ListView visibile, facendo bloccare il programma per un paio di secondi.

Qualche idea su come posso eliminare questo ritardo? Oppure c'è un altro componente che è relativamente facile da usare e che è meglio mostrare grandi quantità di dati?

È stato utile?

Soluzione

Devi utilizzare il VirtualMode .

Altri suggerimenti

Bene. Se si desidera solo caricare il contenuto in background, è possibile provare un thread per popolare ListView, che consentirà il caricamento del modulo.

Non credo che otterrai una pausa se metti un Application.DoEvents (); durante il caricamento degli elementi (che consente al modulo di ridisegnare e ricevere eventi).

for (int ix=0; ix < 10000; ix ++)
{
 listView1.Items.Add(ix.ToString());
 Application.DoEvents();
}

Suppongo che i miei suggerimenti siano utili se non sei a conoscenza di VirtualMode

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top