Как мне обновить WinForms ListView при использовании VirtualMode=True?

StackOverflow https://stackoverflow.com/questions/223516

Вопрос

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

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

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

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

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

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

Райан

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top