2008-09-02 2 views
3

J'ai une application de bureau .Net avec un TreeView comme l'un des éléments de l'interface utilisateur.Comment puis-je contrôler les cases à cocher dans un .Net Forms.TreeView?

Je veux être en mesure de sélectionner plusieurs fois ce TreeView, seulement cela n'est pas supporté du tout. Donc, j'ajoute des cases à cocher à l'arborescence. Mon problème est que seuls certains éléments sont sélectionnables, et ceux qui ne le sont pas ne peuvent pas systématiquement sélectionner les sélections.

Est-il possible de désactiver ou de masquer certaines cases lors de l'affichage des autres?

Répondre

4

Le comportement par défaut de TreeView est que lorsque la propriété Checkboxes est définie sur true, les cases à cocher seront affichées pour tous les TreeNodes.

Le comportement que vous recherchez - pour désactiver ou masquer certaines cases à cocher - est une modification personnalisée 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 à essayer serait d'utiliser le TreeView. StateImageList propriété. Certains sites de vérifier pour plus d'informations:

1

J'ai eu un problème similaire dans un éditeur que j'ai écrit récemment. À la fin, j'ai utilisé la propriété BackColor de TreeNode pour déterminer l'état de sélection du nœud. J'ai ensuite écrit un gestionnaire pour l'événement SelectionChanged qui vérifiait l'état des touches Maj/Contrôle pour déterminer si le noeud sélectionné était ajouté/retiré de la sélection ou créer une nouvelle sélection. Il y avait aussi un Generic::List<> des nœuds qui étaient actuellement sélectionnés pour éliminer toute recherche d'arbre.

0

MultiSelectTreeView:

Pourquoi ne dispose pas d'un .NET TreeView multiselect? Il y a tellement d'utilisations pour un et activer les cases à cocher dans l'arborescence est une alternative assez moche.