ToolTip & Treeview

Résolu
Signaler
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007
-
Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Statut
Membre
Dernière intervention
18 octobre 2008
-
Bonjour à tous,

Etant encore débutant, je cherche un moyen de pouvoir faire la même chose que le screenshot ci dessous :

http://img124.imageshack.us/img124/9351/screentu7.png

Quand par exemple le pointeur de la souris passe sur le checkbox "Fichiers d'aide" la description correspondante s'affiche dans un groupBox et non le tooltip d'origine!

Auriez-vous une solution, un exemple à me présenter? Merci

6 réponses

Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Statut
Membre
Dernière intervention
18 octobre 2008
7
Salut,

En supposant que tu disposes d'un TreeView nommé "treeView1" et un Label nommé "label1" dans lequel s'affiche la description. Le code suivant devrait te permettre d'arriver à faire ce que tu veux :

       // Dans l'événement MouseMove du TreeView...
        private void treeView1_MouseMove(object sender, MouseEventArgs e)
        {
             // ...On demande au TreeView de nous donner l'élément sous la souris...
            TreeViewHitTestInfo info = this.treeView1.HitTest(e.X, e.Y);
            
            if (info.Node != null) // ... s'il y a un élément sous la souris...
            {
                // ...On affiche sa description dans le label
                this.label1.Text = info.Node.ToolTipText;
            }
            else // ... si la souris ne survole aucun élément...
             {
                // ... on affiche un message par défaut
                this.label1.Text = "Rien à afficher !";
             }
        }

C'est ça ?
Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Statut
Membre
Dernière intervention
18 octobre 2008
7
Elle s'ajoute "toute seule" lorsque, dans le concepteur de forms, tu vas dans la fenêtre Propriétés et que tu sélectionnes le bouton Evénements (symbolisé par un éclair).
Sinon, il faut effectivement le faire manuellement.
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Merci pour ta réponse c'est précisement se que je recherche oui, mais jai un petit soucis, même sans se code le tooltip que j'affecte à un checkbox racine ou enfant dans mon treeView1 ne s'affiche pas une fois le pointeur de la souris dessus, j'ai essayé sur dautres contrôles et la le tooltip marche... Une idée?

D'autre part si le texte de mon tooltip est trop long comment faire pour l'afficher sur deux lignes dans le "label1"? Merci beaucoup!
Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Statut
Membre
Dernière intervention
18 octobre 2008
7
Pour que les TreeView (comme les ListView d'ailleurs) affiche le ToolTip de leurs éléments il faut mettre à true la propriété ShowNodeToolTips du TreeView.

Enfin, pour afficher plusieurs lignes dans un Label, il faut mettre à false sa propriété AutoSize. Tu peux alors le redimensionner à une taille suffisamment importante pour contenir n'importe laquelle des descriptions.
Si ça ne suffit pas, tu peux remplacer le Label par une TextBox (les TextBox supportent les barres de défilement).
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Merci beaucoup pour tes renseignements si précieux à ma compréhension!
Après avoir testé si le tooltip marchais sans l'évenement MouseMove (il marche), j'ai remis le code mais rien ne s'affiche dans le label1 et le tooltip apparaîssent toujours sur les checkBox... J'ai bien un treeView1 et un label1 pourtant, j'ai sans doute oublié quelque chose...
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

J'ai moi même trouvé la solution, j'ai du rajouter celle ligne dans la partie "Code généré par le Concepteur Windows Form" dans "treeView1" :

this.treeView1.MouseMove +=
new System.Windows.Forms.
MouseEventHandler(
this.treeView1_MouseMove);

Est-ce normal? Pourquoi cette ligne ne s'ajoute-t-elle pas automatiquement comme les autres controles? Merci