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 :

Icônes de TreeView inactives


Sujet :

C#

  1. #1
    Membre confirmé Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Par défaut Icônes de TreeView inactives
    Bonjour,

    Je développe actuellement une application en C# sous Windows XP et dans laquelle figure une fenêtre de hiérarchie, avec un TreeView. Elle me permet de lister différents objets sur lesquels je travaille.

    À chaque type d'objet, j'associe une icône en utilisant le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    hierarchyTreeView = new TreeView();
    hierarchyIcons = new ImageList();
    hierarchyIcons.Images.Add(Image.FromFile("icon1.gif"));
    hierarchyIcons.Images.Add(Image.FromFile("icon2.gif"));
    hierarchyIcons.Images.Add(Image.FromFile("icon3.gif"));
    ...
    hierarchyTreeView.ImageList = hierarchyIcons;
    hierarchyForm.Controls.Add(hierarchyTreeView);
    Jusque là, tout va bien. Sauf que je souhaite que mon application utilise les styles visuels pour avoir des boutons un peu plus sympas que ceux par défaut. J'ajoute donc cette ligne-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableVisualStyles();
    Et là, gros souci : les nœuds de ma hiérarchie n'ont plus du tout d'icône !
    J'ai testé ceci en ayant les styles visuels d'activés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.Node.ImageUrl="Custom.jpg";
    mais ça ne fonctionne pas mieux.

    Pensant que ça pouvait venir de mon thème, j'ai aussi tenté de rétablir le thème de Windows par défaut mais rien à faire, les icônes du TreeView disparaissent à compter du moment où j'ai fait EnableVisualStyles. Ça ne vient donc pas du thème. Sachant que dans l'explorateur Windows, on retrouve bien des icônes en regard de chaque TreeNode, je me dis qu'il doit bien exister un façon de contourner ce problème.

    Est-ce que vous sauriez du coup comment avoir les styles visuels d'actifs ET des icônes pour chaque noeud des TreeViews ?

    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu es en .NET 1.1 ? Il y a un truc à ce sujet sur MSDN :

    Citation Envoyé par MSDN
    Un bogue dans Microsoft .NET Framework version 1.1 empêche l'affichage des images sur les nœuds TreeView lorsque votre application appelle Application.EnableVisualStyles. Pour résoudre ce problème, appelez Application.DoEvents dans votre méthode Main immédiatement après avoir appelé EnableVisualStyles. Cette erreur est corrigée dans .NET Framework 2.0.

  3. #3
    Membre confirmé Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Par défaut
    Non, je suis en .NET 3.5 mais je vais quand même tenter de voir ce que donne la préconisation de Microsoft.
    Merci pour cette première piste.

  4. #4
    Membre éprouvé Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Par défaut
    Bonjour,

    Vous creez le treeView "hierarchyTreeView", très bien.
    Vous lui associez une liste d'image "hierarchyIcons", très bien également.

    Il semble que vous manquez quelques éléments à partir de là:
    Les images contenues dans la liste d'image sont reperés par les noeud par leur index. Il suffit donc simplement d'indiquer aux noeuds que vous ajoutez dans votre TreeView le numero de l'image qu'il doivent afficher.

    Par exemple (code non teste) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    hierarchyIcons.Images.Add(Image.FromFile("icon1.gif"));
    // Recuperation de l'index de l'image
    int icon1Index = hierarchyIcons.IndexOfKey("icon1.gif");
     
    // Creation du noeud avec son image :
    System.Windows.Forms.TreeNode noeud1TreeNode;
    noeud1TreeNode = new System.Windows.Forms.TreeNode("Texte1", icon1Index, icon1index);
    // Ajout du noeud au TreeView :
    hierarchyTreeView.Nodes.Add(noeud1TreeNode)
    Bon courage.

  5. #5
    Membre confirmé Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Par défaut
    Bonjour,

    @LeCygne :
    Merci pour cette nouvelle précision mais c'est déjà ce que je fais. Je n'ai juste pas copié/collé mon code pour générer les nœuds de mon arborescence par souci de lisibilité (et car c'est du code assez générique ). Je confirme que le 1er index est l'index de l'image lorsque le nœud n'est pas sélectionné et le second index, lorsque le nœud est sélectionné.

    @tomlev :
    Ça n'a rien changé d'ajouter cette ligne, j'ai toujours des nœuds sans icône.

    À noter au passage qu'entre mes nœuds et la flèche qui permet de les agrandir/réduire, on a un léger espace qui semble correspondre à la taille de l'icône qui est censée s'y afficher (je n'ai pas de capture d'écran sous la main mais j'essayerai d'en mettre une).
    Ce n'est pourtant pas un problème d'accès à mes icônes puisque dès que je désactive Application.EnableVisualStyles, elles réapparraissent.

  6. #6
    Membre confirmé Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Par défaut
    Bonjour,

    Petit up sur le sujet, où j'en profite pour vous montrer deux captures d'écran mettant en évidence mon problème :



    À gauche, la version sans style visuel et à droite, la version avec les styles actifs. Toujours pas d'idée sur le sujet ?

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

Discussions similaires

  1. Icône d'un noeud sélectionné d'un TreeView
    Par Hobbi1 dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/03/2012, 19h35
  2. Image de noeud de TreeView = checkbox + icône personnalisée
    Par Chavadam dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/08/2010, 11h32
  3. [CNF] Modifer les icônes des éléments du TreeViewer
    Par Pikouse dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 27/03/2009, 15h56
  4. [C#]Icônes et treeview
    Par fafa139 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/04/2006, 09h26
  5. icône d'une fenêtre fille
    Par bastien dans le forum C++Builder
    Réponses: 6
    Dernier message: 27/05/2002, 13h46

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