Заставить ListView рисовать в фоновом режиме - PullRequest
1 голос
/ 25 сентября 2008

У меня есть ListView, в который иногда мне нужно поместить около 10000 элементов. ListViews не очень хорошо справляются с этим, и они блокируются на пару секунд, пока сортируют элементы и рисуют их. Если вы добавляете предметы по отдельности, это еще хуже, запираясь почти на минуту.

Чтобы обойти это, я подумал, что попробую заполнить ListView, прежде чем мне потребуется его отобразить, но, к сожалению, у него есть другие идеи. Он начинает рисовать только тогда, когда я поворачиваю панель, содержащую ListView, и программа зависает на пару секунд.

Есть идеи, как я могу устранить эту задержку? Или есть другой компонент, который относительно прост в использовании и который лучше отображает большие объемы данных?

Ответы [ 2 ]

7 голосов
/ 25 сентября 2008

Вам необходимо использовать VirtualMode .

0 голосов
/ 25 сентября 2008

Хорошо. Если вы просто хотите загрузить содержимое в фоновом режиме, вы можете попробовать поток для заполнения ListView, который позволит загружать форму.

Не думаю, что вы получите паузу, если поместите Application.DoEvents (); когда вы загружаете элементы (что позволяет форме перерисовывать и получать события).

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

Полагаю, мои предложения хороши, если вы не знаете VirtualMode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...