2010-08-10 10 views
1

Lorsque j'essaie d'exécuter cette méthode, j'obtiens une erreur:Impossible de supprimer des éléments de ListBox

Liste à laquelle cet énumérateur est lié a été modifié. Un énumérateur ne peut être utilisé que si la liste ne change pas.

foreach (var item in lstPhotos.SelectedItems) 
{ 
    lstPhotos.Items.Remove(item); 
} 

Comment puis-je supprimer les éléments sélectionnés?

+0

vous pouvez voir http://stackoverflow.com/questions/380451/how-do-i-do-i-loop-through-items-in-a-list-box- and-then-remove-that-item – nawfal

Répondre

4
while(lstPhotos.SelectedItems.Count != 0) 
{ 
    lstPhotos.Items.Remove(lstPhotos.SelectedItems[0]); 
} 
2

la boucle foreach ne vous permet pas de modifier la collection en cours d'énumération. Si vous avez besoin de modifier la collection, utilisez plutôt une boucle for.

modifier:

Je quitte ma première réponse ci-dessus, mais sur le codage cela, il est devenu évident qu'une boucle while est mieux adaptée à ce problème en raison de la longueur dynamique de la propriété SelectedItems.

while(lstPhotos.SelectedItems.Length > 0) 
{ 
    lstPhotos.Items.Remove(lstPhotos.SelectedItems[0]; 
} 
+0

Comment puis-je accéder à chaque élément individuel alors? –

+0

comme je l'ai dit, utilisez une boucle for –

+0

Une boucle while while peut également convenir. Y a-t-il une propriété comme 'SelectedItem'? Vous savez, tout dépend de la collection/bibliothèque spécifique que vous utilisez. –

Questions connexes