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] Sélection d'image pour suppression


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut [VB.NET] Sélection d'image pour suppression
    bonjour,
    dans mon application je fais afficher des images par le code suivant :
    Code : 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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Dim i, fin As Integer
            Dim photo As String
            'objet de calcul intermédiaire
            Dim calcul As Integer
     
            fin = Me.DGAjoutPhoto.VisibleRowCount - 1
            If fin = 0 Then
                MessageBox.Show("Il n'y a pas d'image pour ce taxon", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                For i = 0 To fin
                    Dim Pic(compteur) As PictureBox
                    If Not Me.DGAjoutPhoto.Item(i, 0) Is DBNull.Value Or Me.DGAjoutPhoto.Item(i, 0) <> Nothing Then
                        photo = Me.DGAjoutPhoto.Item(i, 1)
                        'test le compteur si compteur = 0, il n'y a pas de photo affichée
                        If compteur = 0 Then
                            'Position de la picturebox
                            x = 32
                            y = 32
                            'instancie la picturebox
                            Pic(compteur) = New PictureBox
                            'dimension par défaut de la picturebox
                            Pic(compteur).Size = New System.Drawing.Size(150, 200)
                            'charge la photo dans la picturebox avec le path de la textbox
                            Pic(compteur).Image = Image.FromFile(photo)
                            'recherche la meilleure dimension de l'image
                            Affichagephoto(Pic(compteur))
                            'localisation de l'image
                            Pic(compteur).Location = New System.Drawing.Point(x, y)
                            'l'image devient visible
                            Pic(compteur).Visible = True
                            'instanciation des variables largeur et hauteur
                            largeur = Pic(compteur).Size.Width
                            hauteur = Pic(compteur).Size.Height
                            'Ajoute la photo au panel
                            Me.PanelAjoutPhoto.Controls.Add(Pic(compteur))
                        Else
                            'Instancie la picturebox
                            Pic(compteur) = New PictureBox
                            'dimension par défaut de la picturebox
                            Pic(compteur).Size = New System.Drawing.Size(150, 200)
                            'calule la position théorique de la nouvelle picturebox
                            calcul = x + largeur + 40
                            'Chargement de la photo dans la picturebox à l'aide du path contenu dans la textbox
                            Pic(compteur).Image = Image.FromFile(photo)
                            'Détermination de la meilleure dimension de la photo
                            Affichagephoto(Pic(compteur))
                            'regarde si la photo tient entièrement dans la ligne
                            If (calcul + Pic(compteur).Width) < 968 Then
                                'Si oui, alors la position x de la picturebox = calcul
                                x = calcul
                            Else
                                'Si non, on passe à la ligne
                                y = y + hauteur + 40
                                x = 32
                            End If
                            'localisation de la picturebox
                            Pic(compteur).Location = New System.Drawing.Point(x, y)
                            'localisation de la textbox
                            Pic(compteur).Visible = True
                            'instancie largeur et hauteur
                            largeur = Pic(compteur).Size.Width
                            hauteur = Pic(compteur).Size.Height
                            'Ajout de la picturebox au panel Ajout Photo
                            Me.PanelAjoutPhoto.Controls.Add(Pic(compteur))
                            'regarde si la position y de la picturebox est dans la partie visible du panel
                            If y > 384 Then
                                'Si oui, alors agrandissement du panel et création d'un autoscroll
                                Me.PanelAjoutPhoto.AutoScroll = True
                                Me.PanelAjoutPhoto.AutoScrollMargin = New System.Drawing.Size(10, y + 200)
                            End If
                        End If
     
                    End If
                    'Incrémente le compteur à 1
                    compteur += 1
                Next i
            End If
    Puis, l'utilisateur peut ajouter des photos à celles-ci à l'aide d'un code similaire où il ouvre une une Openfiledialog pour choisir la photo.

    J'aimerais aussi que l'utilisateur puisse supprimer des images. Là, je souhaiterais qu'il puisse séléctionner l'image en cliquant dessus et appuyer sur un bouton supprimer pour la supprimer. Mais je ne sais pas comment faire.

    Quelqu'un peut-il m'aider et m'indiquer le moyen de réaliser la suppression d'image?

    Merci de votre aide à tous.

    Botanique

  2. #2
    Membre averti Avatar de yoyann
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Par défaut
    - La suppression de ton fichier image je suppose que tu veux supprimer ?

    c'est File.Delete("chemin de ton fichier") dans le namespace System.IO

    N'oublie pas que pour supprimer ton image tu dois ne plus l'utiliser dans ton application un simple Dispose de ton image chargée devrait suffire.

    - Si tu veux supprimer ta pictureBox tu fais un remove dans Me.PanelAjoutPhoto.Controls de ta pictureBox.

  3. #3
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Si chaque image est contenu par son propre PictureBox et que tout ces PictureBox sont contenus dans un Panel alors tu peux passer par la collection Panel.Controls pour faire un Remove
    Exemple Imaginons que lors de la création dynamique des PicturesBox tu ais abonné l'evenement click à un seul délégué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AddHandler MonPictureBox.Click, AddressOf ImageClick
    Supposons que tu declare une variable de classe SelectedImage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private SelectedImage As PictureBox
    Sur une selection d'image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub ImageClick(ByVal sender As Object, ByVal e As EventArgs)
       Me.SelectedImage = Ctype(sender,PictureBox)
    End Sub
    Et sur le click du bouton Delete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Delete(ByVal sender As Object, ByVal e As EventArgs) Handles BoutonDelete.Click
       Me.MonPanel.Controls.Remove(Me.SelectedImage)
       Me.MonPanel.Refresh
    End Sub
    Maintenant je suppose que tu vas avoir un réalignement qui ne se fera pas car tu ne semble pas avoir developpé ton propre Control Panel qui gèrerait lui m^me son affichage

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    Merci de ta réponse. Pour être plus précis, c'est la picturebox que je veux supprimer et par la même occasion, le path qui se situe dans une table. Avec les indication que tu m'as fournies, je devrais y arriver. Par contre, comment savoir quelle picturebox supprimer lorsque je clique sur le bouton supprimer?

    Il me faut lui sélectionner une picturebox et là, je vois pas comment faire.
    Peux-tu m'aider?

    Merci beaucoup de ton aide.

    Botanique

  5. #5
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    T'es sûr de m'avoir lu correctement je t'ai déjà répondu

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    Excuse moi, j'ai répondu avant ta réponse mais pas assez vite pour qu'elle arrive avant.

    Merci pour ton aide.
    Je vais regarder ça demain.

    Botanique

  7. #7
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    Bonjour,
    c'est cool, ça marche. Maintenant, il ne me reste plus qu'à effacer la ligne sur la DataTable.
    Est-il possible de retrouver le chemin de la photo à partir de la picturebox?

    Merci beaucoup de votre aide.

    Botanique

  8. #8
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    ça y est, j'ai trouvé comment obtenir le chemin d'accès d'une image d'une picturebox. Il suffit, au moment de la création de l'image de stocker le path dans le propriété text de la picturebox et après de la reprendre.

    Merci à vous tous pour votre aide.

    Botanique

  9. #9
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    J'ai une suggestion bien que tu ais compris le principe
    Il me semble plus judicieux d'utiliser la propriété Tag d'un Control pour stocker une valeur quelconque.
    Comme tu code en VB.Net je t'invite à le faire avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Option Explicit On
    Option Strict On
    Afin de prendre de bonne habitude de programmation sûre.
    Par exemple ici cela t'obligera sainement à récupérer la valeur de la propriété Tag en typant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim path As String = Ctype(MonPictureBox.Tag, String)
    Bonne prog

  10. #10
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    Merci de tes explications

    Botanique

  11. #11
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    Encore une question sur la picturebox : quand elle est séléectionnée pas le click, l'utilisateur ne vois pas laquelle des pictureBox est sélectionnée.
    Je pensais alors dessinner un rectangle de sélection autour de celle sélectionnée.

    Existe-t-il une autre méthode pour différencier la picturebox sélectionnée des autres?

    Merci pour ton aide Neguib.

    Botanique

  12. #12
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par botanique
    Encore une question sur la picturebox : quand elle est séléectionnée pas le click, l'utilisateur ne vois pas laquelle des pictureBox est sélectionnée. Je pensais alors dessinner un rectangle de sélection autour de celle sélectionnée. Existe-t-il une autre méthode pour différencier la picturebox sélectionnée des autres?
    Merci pour ton aide Neguib.
    Botanique
    Cela me semble le plus simple à faire. Reste à faire en sorte que seul le PictureBox selectionné en cours soit repéré par un rectangle de selection

  13. #13
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    Merci pour la confirmation.

    Botanique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/08/2014, 14h52
  2. Réponses: 1
    Dernier message: 11/10/2011, 22h38
  3. Inserer une vidéo avec une image pour fond hebergé sur le net
    Par Prodragster dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/08/2010, 03h20
  4. Réponses: 14
    Dernier message: 18/10/2006, 18h51
  5. [Vulcan.Net] Choix d'une image pour un menu, une fenêtre, etc.
    Par JYves dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 17/08/2006, 16h42

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