Bonjour à tous,
J'ai un petit problème sur une boucle For, du moins j'ai besoin d'un œil extérieur car je n'arrive pas à trouver une solution à mon problème qui paradoxalement je pense est simple...
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Dim ItemsSTD As New List(Of String)
For Each item As SDef In AListbox.SelectedItems
ItemsSTD.Add((Item.SPath) + "\" + (Item.SName))
Dim FTD As String = (Item.SPath) + "\" + (Item.SName)
If System.IO.File.Exists(FTD) = True Then
If CInt(Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes Then
My.Computer.FileSystem.DeleteFile(FTD, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException) 'Fichier envoyé à la corbeille
Forms.MessageBox.Show("Fichier(s) supprimé(s)")
Else
FTD = Nothing 'Ne rien faire
Forms.MessageBox.Show("Fichier(s) non supprimé(s)")
End If
End If
Next |
La boucle fonctionne très bien sauf qu'évidement si je supprime plusieurs fichiers (items) simultanément alors je reçois le message
CInt(Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes
à chaque suppression, ce qui est normal vu qu'il est dans la boucle. Je voudrai en fait que le MessageBox ne s'affiche qu'une seule fois pour tous les fichiers sélectionnés et non pas une fois pour chaque fichiers supprimés (10 suppressions = 10 MessageBox, or je voudrai qu'un seul MessageBox). J'ai essayé de le sortir de la boucle comme ceci et j'ai remplacé FTD par ItemsSTD :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Dim ItemsSTD As New List(Of String)
For Each item As SDef In AListbox.SelectedItems
ItemsSTD.Add((Item.SPath) + "\" + (Item.SName))
'Dim FTD As String = (Item.SPath) + "\" + (Item.SName)
Next
If System.IO.File.Exists(itemsSTD) = True Then
If CInt(Forms.MessageBox.Show("Vous êtes sûr ? ", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes Then
My.Computer.FileSystem.DeleteFile(ItemsSTD, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException) 'Fichier envoyé à la corbeille
Forms.MessageBox.Show("Fichier(s) supprimé(s)")
Else
ItemsSTD = Nothing 'Ne rien faire
Forms.MessageBox.Show("Fichier(s) non supprimé(s)")
End If
End If |
Donc avec ma boucle je remplis "ItemsSTD" puis j'utilise FileSystem.DeleteFile pour supprimer et envoyer à la corbeille le/les fichier(s) sélectionné(s)
My.Computer.FileSystem.DeleteFile(ItemsSTD, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException)
sauf que FileSystem.DeleteFile ne fonctionne qu'avec des strings et non des listes de strings... donc ne fonctionne pas...
Si quelqu'un peut m'aider svp je lui en serai grandement reconnaissant !
(Sinon je peux utiliser FileSystem.DeleteFile de cette manière
My.Computer.FileSystem.DeleteFile(ItemsSTD, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException)
et dans ce cas je n'ai pas besoin d'utiliser de MessageBox pour demander si oui ou non on veut supprimer le fichier, j'ai donc une fenêtre windows qui s'ouvre me le demandant directement.)
Partager