2010-04-03 5 views
0

J'essaie de créer un explorateur de dossiers en utilisant le contrôle TreeView. maintenant, j'ai ajouté une ImageList avec deux images - une pour un dossier et l'autre pour le dossier sélectionné. J'ai utilisé l'événement 'BeforeExpand' pour changer l'icône du nœud actuel (dossier). Le problème est que je ne sais pas comment le changer lorsque l'utilisateur sélectionne un autre dossier ... quel événement puis-je utiliser? Peut-être que je ne l'utilise pas correctement ...?Contrôle des images de noeuds dans un TreeView

+0

est ce wpf ou winforms? – Mathias

Répondre

0

Je pense que vous devez garder une référence du dernier nœud étendu, de sorte que vous pouvez ensuite le modifier

0

hmm Je ne sais pas si je comprends bien, mais en fait, dans un contexte d'explorateur de dossier, si l'utilisateur Développe un autre noeud, vous n'avez pas besoin d'effectuer d'action spécifique sur le noeud que vous avez précédemment développé. Si l'utilisateur clique de nouveau dessus, vous pouvez utiliser l'événement BeforeCollapse pour le modifier. Cela correspondrait-il à vos besoins?

3

Je suppose que vous ne voulez modifier l'image TreeNode que lorsqu'un nœud donné est sélectionné. Et je ne vais pas traiter ici de la question d'afficher des icônes de dossier pour chaque TreeNode avec des nœuds enfants: je pense que si vous comprenez ce qui se passe ici, vous n'aurez aucun problème à ajouter une (troisième) image et à bonne chose "pour rendre les dossiers explicites: et puis vous pouvez étendre cela, si vous le souhaitez, de sorte que les nœuds avec" no child nodes "peuvent avoir des icônes différentes pour sélectionné/non sélectionné.

(1 ajouter un ImageList à votre formulaire avec deux images: l'image avec l'index # 0 sera la valeur par défaut (non sélectionné) image TreeNode

(2 ajouter un AfterSelect gestionnaire d'événements à votre TreeView:. Changer son image à la « sélectionnée » image

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
    { 
     e.Node.SelectedImageIndex = 1; 
    } 

Vous remarquerez que le nœud sélectionné est modifié:.. l'image TreeNode précédemment sélectionnée revient automatiquement à utiliser son image par défaut (index # 0 dans le ImageList)

Note: à mon avis, il est important qu'il re à distinguer entre l'expansion d'un TreeNode dans un TreeView et la sélection d'un TreeNode dans un TreeView: vous pouvez développer n'importe quel TreeNode (avec des nœuds enfants) en cliquant sur l'icône "+": mais cela ne le sélectionnera pas. Le double-clic va, bien sûr, à la fois Expand et Select.

Questions connexes