Как обновить WinForms ListView при использовании VirtualMode = True? - PullRequest
3 голосов
/ 22 октября 2008

У меня есть приложение с большим ListView, которое ужасно медленное, поэтому я использую VirtualMode. Похоже, MSDN не описывает, как я могу добавлять и удалять новые элементы в середине списка.

Например, ListView имеет 1000 элементов (представляющих файлы на диске), и после первоначального заполнения ListView (с помощью события RetrieveVirtualItem) некоторые файлы будут удалены, а некоторые добавлены, так что VirtualListSize может даже быть таким же после обновления .

Вопрос 1) Как мне сказать ListView «эти элементы были изменены / удалены», чтобы он запрашивал?

Кроме того, некоторые файлы просто меняются, и я хотел бы отразить их измененный статус в просмотре списка.

Вопрос 2) Как найти элемент в просмотре списка, если VirtualMode не позволяет мне получить доступ к коллекции Items, которую я использовал ранее (я использовал метод ContainsKey для этой коллекции).

Звучит легко, но я сам не вижу этого. Помощь очень ценится.

Ryan

1 Ответ

3 голосов
/ 22 октября 2008

Чтобы добавить или удалить элементы, просто установите для VirtualListSize общее количество элементов. Для обновления отдельных элементов используйте RedrawItems.

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

...