Como faço para atualizar um WinForms ListView ao usar VirtualMode = True?
-
03-07-2019 - |
Pergunta
Eu tenho um aplicativo com um grande ListView que é terrivelmente lento, então eu estou implementando VirtualMode. MSDN não parecem cobrir como eu iria adicionar e excluir novos itens no meio da listview.
Por exemplo, o ListView tem 1000 itens (representando arquivos no disco) e depois da população inicial do ListView (pelo evento RetrieveVirtualItem) alguns arquivos serão apagados e alguns adicionados para que VirtualListSize pode até ser o mesmo depois da atualização .
Pergunta 1) Como posso dizer ao ListView 'esses itens foram alteradas / deletadas' para que ele repete a consulta?
Além disso, alguns dos arquivos apenas mudar e eu gostaria de refletir seu status alterado na listview.
Pergunta 2) Como faço para encontrar um item da listview dado que VirtualMode não me deixa acessar a coleção de itens que eu estava usando antes (eu usei o método ContainsKey em que a coleta).
Parece fácil, mas eu não posso vê-lo eu mesmo. Ajuda muito apreciada.
Ryan
Solução
Para adicionar ou itens de exclusão, simplay definir VirtualListSize para a contagem total de itens. Para atualizar itens individuais usar RedrawItems.
Para localizar um determinado item, você usa o recipiente que você já tem, não voltar para o ListView. Os indicies dentro de sua lista deve corresponder-se com os itens da ListView.