データベースの内容をうまく表示する仮想 ListView を Winforms に持っています。アイテムはデータベースに非同期に追加され、スクロールバーを一番下まで引くと表示されます。
ここで、非同期スレッドがデータベースに追加されるたびに、ListView も更新されるようにして、どのインデックスが一番下の行になるかを確認したいと思います。ListView オブジェクトを追加する前に、アイテムの高さとリストボックスの高さに基づいて、どのインデックスをトップ インデックスにするかを設定する ListBox でそれを行うことができました。
int numItems = listBox1.ClientSize.Height / listBox1.ItemHeight;
if (listBox1.TopIndex == listBox1.Items.Count - numItems - 1)
listBox1.TopIndex = listBox1.Items.Count - numItems + 1;
残念ながら、ListView には ItemHeight も TopIndex も存在しません。
しかし、主な問題は次のとおりです。特定の範囲のインデックスを表示する必要があることを仮想 ListView に伝えるにはどうすればよいでしょうか。または、いくつかのインデックスが確実に表示されるようにするにはどうすればよいでしょうか。