0
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) ) 提案してください。

4

1 に答える 1