IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.Net]Erreur supression image


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Par défaut [VB.Net]Erreur supression image
    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

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par kahya
    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
    Franchement trop long ton post et trop compliqué à suivre essaie de simplifier le probleme parce que un truc de ce genre me fait perdre le fil.

    Citation Envoyé par kahya
    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

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Par défaut
    je me doutai que ça allai etre difficile a comprendre mais c'est pas tres facile a expliquer non plus...
    en fait je veux pouvoir supprimer une image affichée dans une imagebox.
    mon code fonctionne bien quand par exemple je vais sur la 3 eme foto grace au bouton "suivant" (photo1 -> "suivant" -> photo2 ->"suivant"-> photo3). A ce moment là, la suppression se deroule sans probleme.
    Mais si je fais le chemin inverse, avec mon bouton "precedent"
    (photo5 -> "precedent" -> photo 4 -> "precedent" -> photo3) Ici impossible de supprimer la photo, il me met le message d'erreur comme quoi la photo ne peut etre supprimée car déja utilisé par un autre processus.
    Si on regarde le code de mes boutons "precedent" et "suivant" on voit que le code est quasiment similaire (a part que l'un fait avancer l'indice et l'autre le fait reculer) mais surtout qu'aucune variable presente dans le code de ces boutons n'est presente dans le code du bouton "supprimer la photo" donc je ne vois pas ce qui cloche
    Voila j'espere que c'est un peu plus clair

  4. #4
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Citation Envoyé par kahya
    Image1 = Image.FromFile("" & dossierphoto & txtresnummod.Text & ".jpg")
    Salut, je n'ai pas tout compris mais je pense que c'est cette ligne qui te bloque.
    Essaye ceci :
    Dim photoStream As FileStream = FileToRead.OpenRead()
    taPictureBox.Image = Image.FromStream(photoStream)
    photoStream.Close()
    Il me semblait que ceci était dans la FAQ mais je ne le retrouve pas, c'est une particularité des PictureBox (FW 1.1, pour le 2 ?) qui bloquent systématiquement les fichiers si on utilise le .FromFile.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Par défaut
    je vais essayer mais je ne pense pas que le probleme vienne de là puisque je supprime l'image grace a dispose et file.delete et ça marche (quand j'avance mais pas quand je recule)

Discussions similaires

  1. [VB.NET] Erreur System.InvalidCastException
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/09/2004, 11h47
  2. [VB.NET] Erreur sur la creation dynamique d'une texbox
    Par headcooper dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/07/2004, 19h34
  3. [VB.NET] Erreur conversion de code c=>vb (opendialogfile)
    Par hirochirak dans le forum Windows Forms
    Réponses: 19
    Dernier message: 02/06/2004, 16h31
  4. [VB.NET] afficher une image stockée dans une table
    Par matonfire dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/03/2004, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo