2011-03-24 54 views
5

我使用VirtualMode來填補像如何在ListView中使用虛擬模式?

List<ListViewItem> m_lstItem; 


    private void Form1_Load(object sender, EventArgs e) 
    { 
     m_lstItem = Enumerable.Range(0, 100000).Select(X => new ListViewItem(new String[] { X.ToString(), (X + 1).ToString() })).ToList(); 
     listView1.VirtualListSize = m_lstItem.Count; 
    } 

    private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) 
    { 
     e.Item = m_lstItem[e.ItemIndex]; 
    } 

列,但我不能訪問所選擇的項目。在訪問所選項目的拋出一個錯誤,如Cannot access the selected items collection when the ListView is in virtual mode.

我要如何從listView所選項目當它在VirtualMode

請幫我做到這一點。

回答

8

從MSDN:

在虛擬模式下,該項目集合被禁用。嘗試訪問它會導致InvalidOperationException。 CheckedItems集合和SelectedItems集合也是如此。如果要檢索選定或檢查的項目,請改爲使用SelectedIndices和CheckedIndices集合。

0

由於某些原因,當我嘗試使用SelectedIndices時,SelectedIndices總是無效的,也許是因爲使用了FULLROWSELECT。

即使文檔不清晰,所選項目仍然可用。我使用ItemSelectionChanged事件處理程序發現它爲e.ItemIndex

希望這可能對別人有幫助。