Bonjour tout le monde, voila j'ai un probleme pour supprimer une image.
J'ai un formulaire qui récupere tout les enregistrements d'une base de donnée et les affecte dans différents champs, et un bouton précédent et suivant qui permettent de naviguer d'un enregistrement a l'autre (ça re rempli tout simplement les champs du formulaire avec l'occurence suivante) avec cela, j'ai un imagebox qui contient la photo lié a l'enregistrement courant. Je peux agir sur cette photo en la supprimant la modifiant, ou en lier une si il n'y en a pa deja une.
Le probleme est dans la suppression. Quand une photo est présente je peux la supprimer grace a ce code

Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim fichier As String
        Dim reply As Integer
        If btnsupmod.Text = "Supprimer la photo" Then
            reply = MsgBox("Supprimer la photo?" & txtresnummod.Text, MsgBoxStyle.OKCancel)
            MsgBox(m)
            'si c'est ok
            fichier = dossierphoto & txtresnummod.Text & ".jpg"
            MsgBox(fichier)
            If (reply = 1) Then
                lblresimgmod.Image = Nothing
                Image1.Dispose()
                File.Delete(fichier)
            End If
[... suite plus tard pas le temps ...]

je navigue entre les enregistrement grace a mes boutons précedent et suivant dont le code est le suivant :
Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub btnprecedentmod_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnprecedentmod.Click
        If m = 0 Then
            MsgBox("Fin des enregistrements")
        Else
            m = m - 1
            Affichanimalmod()
        End If
    End Sub
 
    Private Sub btnsuivantmod_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsuivantmod.Click
        If m = Result.Rows.Count - 1 Then
            MsgBox("Fin des enregistrements")
        Else
            m = m + 1
            Affichanimalmod()
        End If
    End Sub
m est l'indice qui permet de passer d'un enregistrement a un autre dans le datarow.
la procedure Affichanimalmod est la suivante :

Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Private Sub Affichanimalmod()
 
        Ligne = Result.Rows(m)
        txtresnummod.Text = Ligne("numanimal").ToString
        txtresnommod.Text = Ligne("nomanimal").ToString
        txtresdatemod.Text = Ligne("datearriveeanimal").ToString
        txtrespoidmod.Text = Ligne("poidanimal").ToString
        txtresagemod.Text = Ligne("ageanimal").ToString
 
        cbrestatouagemod.Items.Add(Ligne("tatouageanimal").ToString)
        cbrestatouagemod.Text = Ligne("tatouageanimal").ToString
 
        cbressexemod.Items.Add(Ligne("sexeanimal").ToString)
        cbressexemod.Text = Ligne("sexeanimal").ToString
 
        cbressterilisationmod.Items.Add(Ligne("sterilisationanimal").ToString)
        cbressterilisationmod.Text = Ligne("sterilisationanimal").ToString
 
        If (Ligne("codetypeanimal").ToString = 0) Then
            txtrestypemod.Text = "chien"
        Else
            txtrestypemod.Text = "chat"
        End If
        ''''''''''''''''' remplissage combobox'''''''''''''''''''''
        If (Ligne("tatouageanimal").ToString = "non") Then
            cbrestatouagemod.Items.Add("oui")
        Else
            cbrestatouagemod.Items.Add("non")
        End If
 
        If (Ligne("sexeanimal").ToString = "femelle") Then
            cbressexemod.Items.Add("male")
        Else
            cbressexemod.Items.Add("femelle")
        End If
 
        If (Ligne("sterilisationanimal").ToString = "oui") Then
            cbressterilisationmod.Items.Add("non")
        Else
            cbressterilisationmod.Items.Add("oui")
        End If
        ''''''''''''' vidage de l'image ''''''''''''''''
        lblresimgmod.Image = Nothing
        Try
            Image1 = Image.FromFile("" & dossierphoto & txtresnummod.Text & ".jpg")
            lblresimgmod.Image = Image1
 
            btnsupmod.Text = "Supprimer la photo"
            btnsupmod.Enabled = True
            btnmodimgmod.Enabled = True
            txtcheminmod.Enabled = True
            btnmodimgmod.Text = "Modifier la photo"
            btnmodimgmod.Enabled = True
        Catch mysqlexception As Exception
            btnsupmod.Text = "Lier une photo"
            btnsupmod.Enabled = False
            btnmodimgmod.Enabled = False
            txtcheminmod.Enabled = False
            btnsupmod.Enabled = True
            btnmodimgmod.Text = "Lier"
        End Try
        cbrestatouagemod.DropDownStyle = ComboBoxStyle.DropDownList
        cbressexemod.DropDownStyle = ComboBoxStyle.DropDownList
        cbressterilisationmod.DropDownStyle = ComboBoxStyle.DropDownList
    End Sub
LE probleme maintenant! Quand j'accede a l'enregistrement dont je veux supprimer la photo par le bouton "suivant" tout marche, mais quand je le fais par le bouton "suivant", c'est le drame, il me dit qu'il ne peut pas supprimer l'image car elle est utilisé par un autre processus. Pourtan mon code de "precedent" est quasi le meme que "suivant", j'ai testé de faire afficher l'indice m a l'execution, elle affiche la meme valeur quand j'accede par "precédent" et par "suivant" mais pourtant j'ai une erreur... je ne vois absolument pas d'ou ça vient et je dois absolument resoudre ce probleme car ce programme me sert pour mon examen de fin d'année.... Quelq'un voit d'où viens le probleme?? merci a vous