C# TreeView de Développer/réduire parent sélectionnez
C'est difficile à expliquer donc je vais juste vous dire ce que je veux faire et comment je fais alors peut-être quelqu'un witll avez une idée sur ce que je fais de mal.
Dans mon winForm j'ai un contrôle TreeView que j'remplir. Tous les parents qui ont des enfants (n'importe quel nombre d'entre eux), mais pas d'enfants ont des enfants de leur propre. Exemple:
- Parent 1
Child 1
Child 2
Child 3
- Parent 2
Child 4
Le comportement que je veux est la suivante:
- lorsque l'utilisateur clique sur un enfant, il est sélectionné (par défaut)
- Lorsque l'utilisateur clique sur un parent, il faut soit réduire ou développer, mais pas de modifier toute sélection
Point 1 n'est pas un problème puisque c'est le comportement par défaut d'un TreeView, Point 2, cependant, est une autre histoire.
Voici ce que j'ai fait jusqu'à présent:
Pour empêcher le parent d'être sélectionnée je ajouter un BeforeSelect gestionnaire d'événement et y mettre le code suivant:
if (e.Node.Parent == null)
e.Cancel = true;
Ce fait le travail parfaitement. Alors, maintenant que j'ai annulé la sélection de la société mère je veux agrandir ou le réduire. J'ai donc modifié le code ci-dessus:
if (e.Node.Parent == null)
{
if (e.Node.IsExpanded)
{
e.Node.Collapse();
}
else
{
e.Node.Expand();
}
e.Cancel = true;
}
Un peu cela fonctionne - sauf que, contrairement cliquant sur le signe+, l'appel de l'expansion() ou réduire() rend le nœud parent d'être sélectionné, en ignorant l'e.Cancel = true; ligne.
J'ai essayé de faire le SelectedNode avant que j'appelle l'Effondrement() ou Augmenter() et ensuite le réglage de l'arrière - fonctionne mais quand je fais une extension de la mère de nouveau à faire de la sélection.
Somewhow le signe + est exactement ce que je veux quand je clique sur un parent - que je n'arrive pas à le faire fonctionner.
Idées?
Merci d'avance
OriginalL'auteur 537mfb | 2012-04-12
Vous devez vous connecter pour publier un commentaire.
essayez ceci:
Pouvez-vous expliquer plus en détail ce qui se passe ici? Je ne suis pas entièrement sûr. Mon problème est que mon SelectedNodeChanged ne pas le feu si je clique sur le même nœud à deux reprises (un pour l'élargir, l'un pour l'effondrement)
Je n'ai pas trouvé SelectedNodeChanged événement dans le TreeView. Vouliez-vous dire AfterSelect? En fait, ce code ne change pas de sélection lorsque vous cliquez sur une racine (extensible) nœud. Veuillez noter que la structure de votre arbre doit suivre l'énoncé de la question: "Tous les parents qui ont des enfants (n'importe quel nombre d'entre eux), mais pas d'enfants ont des enfants de leur propre"
OriginalL'auteur chiper