2009-08-25 7 views
1

J'ai deux ListViews ... J'ai ListView (ListView1) avec des articles, et un autre (ListView2) est vide. j'ai besoin de copier les éléments sélectionnés de ListView1 à ListView2 en même temps, je dois supprimer l'élément vérifié dans ListView1 en utilisant C# ...vérifié articles listview

J'utilise sous forme de fenêtres ...

Merci d'avance ..

Répondre

2

Quelque chose comme ça? (Non testé !!)

for (int i = ListView1.Items.Count - 1; i >= 0; i--) 
{ 
    if (ListView1.Items[i].Checked) 
    { 
    ListView2.Items.Add(ListView1.Items[i]); 
    ListView1.Items.Remove(ListView.Items[i]); 
    // OR 
    // ListView1.Items.RemoveAt(i); 
    } 
} 

EDIT:
Cela pourrait être mieux.

CheckedListViewCollection checked = ListView1.CheckedItems 
foreach (itm in checked) 
{ 
    ListView2.Items.Add(itm); 
    ListView1.Items.Remove(itm); 
} 
+0

L'utilisation de CheckedListViewCollection est sympa. – RRUZ

+0

Votre deuxième solution est la façon parfaite de le faire. Je vous remercie! – CharithJ

0

// Copie ListView

for (int i = ListView1.Items.Count - 1; i >= 0; i--) 
{ 
    if (ListView1.Items[i].Checked) 
    { 
    ListView2.Add(ListView1.Items[i]); 
    } 
} 


//Delete checked 

ListView1.CheckedIndexCollection checkedItemsList = listView1.CheckedIndices;  
while (checkedItemsList.Count > 0) 
{ 
    listView1.Items.RemoveAt(checkedItemsList[0]); 
} 

Bye

+0

Vous avez une erreur dans votre boucle for. Devrait lire i--. Pas i ++. –

+0

Apparemment moi aussi !!! : D –

+0

Merci, CKret. – RRUZ

1
while (listView1.CheckedItems.Count > 0) 
{ 
    ListViewItem item = listView1.CheckedItems[0]; 
    listView1.Items.Remove(item); 
    listView2.Items.Add(item); 
}

testé.

Notez l'ordre de suppression et d'ajout de l'article. Le cadre génère une exception si vous essayez d'ajouter un ListViewItem à plusieurs listes en même temps.