2017-10-01 3 views
0

Je souhaite supprimer plusieurs fichiers sélectionnés dans la zone de liste, mais un seul fichier est supprimé lorsque plusieurs éléments sont sélectionnés..NET Supprimer plusieurs fichiers de la zone de liste

Le code sont comme je crois en dessous

Dim dialog As DialogResult 
dialog = MsgBox("Delete Forever?", MsgBoxStyle.YesNoCancel) 

If dialog = MsgBoxResult.Yes Then 
    For i As Integer = (ListBox1.SelectedItems.Count - 1) To 0 Step -1 
     FileSystem.DeleteFile(ListBox1.Items(ListBox1.SelectedIndex).ToString(), UIOption.AllDialogs, RecycleOption.DeletePermanently) 
     ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) 
    Next 
Else 
    MessageBox.Show("Not Deleted!") 
End If 

que la boucle est pas sous la forme correcte.

Répondre

1

chose facile d'abord, vérifiez que quelque chose est sélectionné avant la main. Ce sera simplement votre code pour imbriquer un peu et je trouve qu'il me permet de rester concentré sur ce que je dois faire attention.

Ensuite, il sera probablement plus facile d'itérer sur les éléments sélectionnés, pas par l'index sélectionné. Signification quelque chose comme ça (ce qui est pseudocode, il pourrait ne pas compiler réellement)

For Each item In ListBox1.SelectedItems 
    FileSystem.DeleteFile(item.ToString(), UIOption.AllDialogs, RecycleOption.DeletePermanently) 
    ListBox1.Items.Remove(item) 
Next 

Donc pour faire toutes ces choses ensemble, qui va changer votre code dans quelque chose comme ça (aussi pseudocode, non vérifié)

If ListBox1.SelectedItems.Count = 0 Then 
    MessageBox.Show("Nothing Selected!") 
End If 

Dim dialog As DialogResult 
dialog = MsgBox("Delete Forever?", MsgBoxStyle.YesNoCancel) 
If dialog <> MsgBoxResult.Yes Then Return 

For Each item In ListBox1.SelectedItems 
    FileSystem.DeleteFile(item.ToString(), UIOption.AllDialogs, RecycleOption.DeletePermanently) 
    ListBox1.Items.Remove(item) 
Next 
+1

Merci! Géré pour le faire fonctionner avec https://stackoverflow.com/questions/18947629/list-that-this-enumerator-is-bound-to-has-been-modified – Tim