Comment puis-je contrôler les cases à cocher dans un .Formes De Filet.TreeView?
Question
J'ai un .Net application de bureau avec un TreeView comme l'un des éléments de l'INTERFACE utilisateur.
Je veux être en mesure de multi-sélectionnez ce TreeView, seulement ce n'est pas du tout supporté.
Donc, je suis ajoutant des cases de l'arbre, Mon problème est que seuls certains éléments sont sélectionnables, et ceux qui ne savent pas ne peut pas constamment cascade de sélections.
Est-il possible de désactiver ou masquer certaines cases tout en affichant des autres?
La solution
Le comportement par défaut de TreeView est que lorsque l' Des cases à cocher la propriété est définie à vrai, que des cases à cocher pour tous les TreeNodes.
Le comportement que vous êtes à la recherche pour - pour désactiver ou masquer certaines cases - est une coutume de modification du comportement normal.Vous pouvez créer une implémentation personnalisée de TreeView ou TreeNode qui remplace le comportement par défaut.Une autre chose à faire serait d'utiliser le TreeView.StateImageList de la propriété.Quelques sites à consulter pour plus d'info:
- Voir ce post pour les forums MSDN qui passe par une mise en œuvre similaire à ce que vous tentez.
- CodeProject: Tri-State TreeView
- CodeProject: Comment gérer personnalisée d'état du nœud images dans un TreeView (par ex.tristate cases à cocher)
Autres conseils
J'ai eu un problème similaire dans un éditeur de texte que j'ai écrit récemment.En fin de compte, j'ai utilisé le TreeNode
's BackColor
propriété afin de déterminer l'état de sélection du nœud.J'ai ensuite écrit un gestionnaire pour l' SelectionChanged
l'événement qui a vérifié l'état de la Maj/touches de Contrôle pour déterminer si le nœud sélectionné a été ajouté à/retiré de la sélection ou la création d'une nouvelle sélection.Il y avait aussi un Generic::List<>
les nœuds qui ont été actuellement sélectionné pour éliminer toute l'arbre de recherche.
Pourquoi ne le fait pas .NET ont multiselect treeview?Il existe de nombreuses utilisations pour l'un et en activant les cases à cocher dans le treeview est assez moche alternative.