Forçando um ListView para desenhar no fundo
Pergunta
Eu tenho um ListView que às vezes eu preciso para colocar em torno de 10.000 itens em. ListViews realmente não lidar com isso muito bem, e eles trancar por um par de segundos enquanto elas classificar os itens e desenhá-los. Se você adicionar os itens individualmente, é ainda pior, trancando-se por quase um minuto.
Para contornar este problema, eu pensei que eu ia tentar preencher o ListView antes eu preciso exibi-lo, mas, infelizmente, tem outras idéias. Ele só começa a desenhar quando ligo o painel que contém o ListView visível, tornando o programa pendurar por um par de segundos.
Todas as ideias sobre como posso eliminar esse atraso? Ou há um outro componente que é relativamente fácil de usar que é melhor para mostrar grandes quantidades de dados?
Solução
Você precisa usar o VirtualMode .
Outras dicas
Bem. Se você quiser apenas para carregar o conteúdo no fundo você poderia tentar um fio para preencher o ListView, o que permitirá que a carga de formulário.
Eu não acho que você vai ter a pausa, se você colocar um Application.DoEvents (); quando você estiver carregando os itens (que permite que o formulário para redesenhar e receber eventos).
for (int ix=0; ix < 10000; ix ++)
{
listView1.Items.Add(ix.ToString());
Application.DoEvents();
}
Eu acho que minhas sugestões são bons, se você não está ciente de VirtualMode