Pregunta

Tengo un ListView que a veces necesito colocar alrededor de 10000 elementos. Los ListViews realmente no manejan esto bien, y se bloquean por un par de segundos mientras ordenan los elementos y los dibujan. Si agrega los elementos individualmente, es aún peor, bloquearlos durante casi un minuto.

Para solucionar esto, pensé que intentaría rellenar el ListView antes de tener que mostrarlo, pero desafortunadamente tiene otras ideas. Solo comienza a dibujar cuando gire el panel que contiene el ListView visible, lo que hace que el programa se cuelgue durante unos segundos.

¿Alguna idea de cómo puedo eliminar este retraso? ¿O hay otro componente que es relativamente fácil de usar y es mejor para mostrar grandes cantidades de datos?

¿Fue útil?

Solución

Debe usar el VirtualMode .

Otros consejos

Bueno. Si solo desea cargar el contenido en segundo plano, puede probar un hilo para rellenar el ListView, que permitirá cargar el formulario.

No creo que obtendrás la pausa si pones una Application.DoEvents (); cuando está cargando los elementos (lo que permite que el formulario se vuelva a dibujar y reciba eventos).

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

Supongo que mis sugerencias son buenas si no estás al tanto de VirtualMode

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top