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

C# Discussion :

Récupérer image node d'un treeview dans une picturebox


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 4
    Points
    4
    Par défaut Récupérer image node d'un treeview dans une picturebox
    Bonjour,

    J'aimerais réaliser un visionnaire de photos en C#. J'ai placé quelques photos dans un treeview, et lorsque j'en séléctionne une, j'aimerais qu'elle s'affiche dans une picturebox à coté. Mais je bloque à ce niveau là car je n'arrive pas à écrire le code pour traduire ceci.

    Si vous pouviez m'aider svp

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 72
    Points : 100
    Points
    100
    Par défaut
    Bonjour Gangan,

    tu peux utiliser l'évenement AfterSelect du Treeview, c'est l'évenement qui est déclencher lorsque tu selectionne un noeud.

    Cet évenement reçoit comme paramètre un TreeViewEventArgs, dont cet objet contient un attribut Node, qui correspond au noeud actuellement selectionné.

    A partir de ce moment, tu peut affecter à la propriété Image de ton PictureBox, la propriété Image de ton noeud

    SI jamais tu as le moindre problème pour me comprendre, n'hésite pas, c'est le matin j'ai un peu de mal ^^

    Bonne journée.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Aussi non tu peux aussi utiliser la propriété Tag du TreeNode pour enregistrer l'image lié au TreeNode.

  4. #4
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Merci à vous 2!

    J'essaie ça toute et je vous redis!

  5. #5
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    @supermouton:

    Alors voila ce que j'ai fait : (TV : mon treeview et Zoom : ma picturebox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     private void  TV_AfterSelect(object sender, TreeViewEventArgs e)
            {
                Zoom.Image =  e.Node.ImageKey;
     
            }
    Ca me met l'erreur suivante :
    Cannot implicitly convert type 'sting' to 'System.drawing.image'
    L'erreur vient au niveau du e.Node.ImageKey. Mais c'est bien ce que je veux faire non? Récupérer l'ImageKey (ou l'imageIndex)

    @Aeronia : Le problème c'est qu'au final j'aurais bcp de photos, que l'utilisateur pourra ajouter, donc je peux pas lui demander de rentrer un tag pour chaque ajout. Enfin, si j'ai bien compris ta solution

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    En fait ce que je veux dire, c'est que tu peux enregistrer ton image dans le tag de tes TreeNode (node.Tag).
    Et simplement récupérer ton image lors de l'after select, en castant le tag du noeud en image.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void  TV_AfterSelect(object sender, TreeViewEventArgs e)
    {
           if(e.Node.Tag != null)
           {
                      Image img = (Image)e.Node.Tag;
                      Zoom.Image =  img;
           }
     
    }
    Quelque chose comme ça

  7. #7
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Il signale pas d'erreur dans le code mais quand je compile il me dit

    Impossible d'effectuer un cast d'un objet de type 'System.String' en type 'System.Drawing.Image'.
    C'est au niveau du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image img = (Image)e.Node.Tag;

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    C'est que tu as mis un string en tant que tag et non l'image, montres là ou tu affectes l'image au Tag stp ^^

  9. #9
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    lol on s'est mal compris je crois ^^

    Le Tag c'est dans mon Treeview, dans les propriétés des Nodes, et je peux que mettre un nom, pas associer des images.

    On parle pas de la même chose non?

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Tu as une propriété Tag pour tout les TreeNode de ton TreeView.
    Le Tag peut contenir n'importe quel objet, String, Image, classe personnalisée etc

  11. #11
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Non, je confirme que je ne peux mettre que du texte.

    Dans les propriétés du treeview je vais dans Nodes (Collection), et là pour chaque node je peux mettre dans la case du Tag que du texte

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Peux tu me montrer comment tu fais ?

    Petit exemple ou je défini la propriété Tag de TreeNode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private TreeNode RemplirNode(TreeNode node)
    {
                TreeNode Node = node;
                Groupes_Activite groupe = (Groupes_Activite)Node.Tag;
                foreach (Groupes_Activite group in CAC.GetLINQ().Groupes_Activites.Where(gr => gr.Groupes_Activite1 == groupe).OrderBy(gr => gr.Nom))
                {
                    TreeNode new_node = new TreeNode(group.Nom);
                    new_node.Tag = group;
                    new_node = RemplirNode(new_node);
                    Node.Nodes.Add(new_node);
                }
                return Node;
    }
    Une fonction AfterSelect :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
          if (treeView1.SelectedNode != null)
          {
                TreeNode node = e.Node;
                Groupes_Activite groupe = (Groupes_Activite)node.Tag;
          }
    }
    Maintenant tu es peut être sous un autre framework etc, je saurais pas trop te dire à ce niveau là ...

  13. #13
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Solution trouvée!

    Pour les intéressés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     private void  TV_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (TV.SelectedImageKey != null)
                {
                    TreeNode node = e.Node;
                    String root = node.ImageKey;
                    String cheminAbs = @"C:\Users\Antoine\Pictures\" + root;               
                    Zoom.Image = new Bitmap(cheminAbs);
     
                            }
            }

    Merci pour vos aides!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/10/2011, 22h38
  2. Récupérer un treeview dans une callback
    Par yetimothee dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 26/09/2010, 11h56
  3. Récupérer variable texte pour l'intégrer dans une image
    Par paradeeyes dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 18/10/2009, 18h01
  4. Récupérer les coordonnées d'un pixel dans une image
    Par amine52002 dans le forum Langage
    Réponses: 1
    Dernier message: 30/06/2008, 14h52
  5. Récupérer l'image choisi par l'utilisateur dans une autre interface
    Par sonia06 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 22/04/2008, 15h53

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