public new int VirtualListSize
{
get { return base.VirtualListSize; }
set
{
// If the new size is smaller than the Index of TopItem, we need to make
// sure the new TopItem is set to something smaller.
if (VirtualMode &&
View == View.Details &&
TopItem != null &&
value > 0 &&
TopItem.Index > value - 1)
{
TopItem = Items[value - 1];
}
base.VirtualListSize = value;
}
}
リストビューの topitem プロパティを設定しようとしていますが、仮想モードではアイテムが無効になっています。そのため、仮想モードでアクセスしようとするコードは無効な操作例外をスローします。行ごとにデバッグしようとすると、例外は発生しません。行TopItem=Items[value-1]
にコメントすると、例外はスローされません。
System.InvalidOperationException: VirtualMode の場合、ListView RetrieveVirtualListItem イベントは、ListView 列ごとにリスト ビュー SubItem を必要とします。System.Windows.Forms.ListView.WmReflectNotify(Message& m) で System.Windows.Forms.ListView.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ) 提案してください。