Pb effacement de fichier dans une listview VB

Signaler
Messages postés
2
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
28 juillet 2009
-
Messages postés
2
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
28 juillet 2009
-
Bonjour a tous

Voici mon probleme. J'ai une listview ou j'affiche les images contenu dans un dossier precis. j'ai creer un bouton delete pour pouvoir effacer une image que l'on selectionne dans la listview. Je voudrais pouvoir supprimer a la fois l'image dans la listview mais egalement l'image dans son dossier.
Je n'ai pas eu trop de probleme pour realiser la premiere partie (effacement de l'image dans la listview) mais ca ce complique pour le reste.

Voici ce que je fais pour effacer l'image de la listview:

Private Sub btnDeleteSelected_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteSelected.Click

[color=blue] Dim patientDirectory As String = txtLastName.Text & " " & txtFirstName.Text
Dim SelectedImageIndex As Integer = ListView1.FocusedItem.ImageIndex
Dim name As String = ListView1.Items.Item(SelectedImageIndex).Text

Dim path As String = "D:\the big one test 3\Patients" & patientDirectory & "" & name & ".bmp"

ListView1.Items.Remove(ListView1.Items(SelectedImageIndex))

C'est a cette ligne que tout se complique:

My.Computer.FileSystem.DeleteFile(path)

Il me met alors ce message d'erreur:

The process cannot access the file 'D:\the big one test 3\Patients\Melki Alex\Test_003.bmp' because it is being used by another process.

Je vois bien qu'il m'aime pas le faite que je lui demande d'effacer un fichier dont le chemin n'est plus valide parce que l'image n'est plus dans la listview.


Comment faire ?

Merci par avance pour votre aide.

2 réponses

Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
Salut,

Te casse pas la tête utilise la propriété Tag pour stocker l'emplacement de l'image sur le disque.

Exemple :

        'Chargement 
        Dim ImageDirectory As New IO.DirectoryInfo("Chemin du dossier d'image")
        '
        Dim ImageFiles() As IO.FileInfo = ImageDirectory.GetFiles("*.jpg")
        '
        For Each ImageFile In ImageFiles
            '
            Dim img As New Bitmap(ImageFile.FullName)
            ImageList1.Images.Add(ImageFile.Name, img)
            Dim Index As Integer = ImageList1.Images.Count - 1
            ImageList1.Images(Index).Tag = ImageFile.FullName
            ListView1.Items.Add(ImageFile.Name, Index)
            '
        Next


        'Supression
        If Not ListView1.SelectedItems.Count = 0 Then
            Dim Index As Integer = ListView1.FocusedItem.ImageIndex
            Try
                Dim File As String = ImageList1.Images(Index).Tag
                IO.File.Delete(File)
                ListView1.Items.RemoveAt(Index)
            Catch ex As Exception
                MsgBox("Impossible de supprimer cette image, celle-ci est en cour d'utilisation par une autre application.")
            End Try
        End If


@+ Mayzz.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
2
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
28 juillet 2009

Salut Mayzz et merci pour ta reponse

Je viens d'essayer le code que tu as poster et il me met un erreur a la ligne suivante:

Dim ImageFiles() As IO.FileInfo = ImageDirectory.GetFiles("*.jpg")
et il marque "The directory name is invalid."

Je ne comprends pas l'erreur, peux tu m'eclairer encore ?!

Merci