Что касается элемента управления Virtual ListView в приложении Winforms, что такое ВСЕ функции события RetrieveVirtualItem?Что такое ListView.RetrieveVirtualItem Event - C#
Сценарий: есть объект Dictionary, который действует как мой кеш ListView. И его элементы отображаются в ListView. При щелчке столбца словарь кэша сортируется в памяти, а ListView - Refresh() ed. Влияние на пользовательский интерфейс ListView хорошо сортируется. :)
Но я хочу понять, какова роль события RetrieveVirtualItem, которое запускается при обновлении().
В обработчике RetrieveVirtualItem событий [Кто-то код, :(], следующие сделаны:
- на основе
RetrieveVirtualItemEventArgs.ItemIndex
, получить сообщение из кэша - Set
RetrieveVirtualItemEventArgs.Item
= retreived пункт выше
Похоже, что то, что сделано в обработчике событий, важно, потому что, если я его вынесу, ListView плачет. В чем смысл этого события?
EDIT Или позвольте мне перефразировать вопрос ... Меня беспокоит, почему после сортировки (и RetrieveVirtualItem
обработчика событий) выбранный элемент остается в том месте, где он был до сортировки. I.e. Если я выберу элемент # 5 и сортирую, и если сортировка делает этот элемент последним, я бы предпочел, чтобы после LOW был выбран элемент LAST. Но в моем случае 5-й элемент выбирается после сортировки. Итак, каково поведение по умолчанию RetrieveVirtualItem
WRT выбранного элемента?
Вы сказали: «Если вы не обрабатываете событие RetrieveVirtualItem, то ни ListViewItems не будет добавлен в ваш ListView», так, наоборот, это значит, что ВСЕ элементы добавляются этим событием? Кажется, нет, потому что он играет только с 'myCache [e.ItemIndex - firstItem]'. – ViV
Да, все элементы (когда listview находится в виртуальном режиме) будут добавлены этим событием. Этот метод не только полагается на выборку элементов из myCache, как если бы выполнялся код внутри предложения else, создается новый элемент и назначается аргументам событий (e.Item = new ListViewItem()). Другое событие CacheVirtualItems полагается на управление кешем – Richard