I know it sounds complicated to reproduce but please follow me:
You have a ListView with VirtualMode = true.
Select an item, scroll down so that the item selected gets outside the visual area and then try to add another item to the ListView.
You will see that for a split second it behaves abnormally and see somekind of flicker. If you escalate the situation and try to add a lot of items really fast (I add around 20 times per second) you will see that the small problem becomes very big. It's a combination of flickering and invalid items around there.
I have investigated the problem and it seems that the ListView generates a lot of RetrieveVirtualItem
events for the selected item (even though it's clearly not visible).
It seems like when I add a new item (increase VirtualListSize) the ListView first tries to focus on the selected item and then go back to the previous location.
Did anybody experience the same problem?
Various controls have a protected DoubleBuffered property. You could try deriving your own DBListView from ListView, and in its constructor set its DoubleBuffered property to true.