2011-03-24 8 views
5

estoy usando VirtualMode para llenar las columnas como¿Cómo se usa el modo virtual en 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]; 
    } 

pero no puedo acceder al elemento seleccionado. mientras accede al elemento seleccionado su lanzando un error como Cannot access the selected items collection when the ListView is in virtual mode.

¿Cómo consigo los elementos seleccionados de la listView cuando está en VirtualMode

por favor me ayude a hacer esto.

Respuesta

8

De MSDN:

En el modo virtual, la colección de artículos está desactivado. Intentar acceder a ella da como resultado una InvalidOperationException. Lo mismo es cierto para la colección CheckedItems y la colección SelectedItems. Si desea recuperar los elementos seleccionados o marcados, use las colecciones SelectedIndices y CheckedIndices en su lugar.

0

Por alguna razón los SelectedIndices siempre fueron inválidos cuando traté de usarlos, quizás debido al uso de FULLROWSELECT.

Sin embargo, el elemento seleccionado estaba disponible aunque la documentación no estaba clara. Lo encontré con el controlador de eventos ItemSelectionChanged como e.ItemIndex.

Espero que esto pueda ser útil para otra persona.

Cuestiones relacionadas