TreeView avec des Cases à cocher en c#
J'ai une arborescence avec des cases à cocher en c#, je veux que lorsque l'utilisateur sélectionne un nœud tous les nœuds qu'il y a sur les niveaux inférieurs automatique vérifié aussi.
Personne ne sait au sujet de manière à le faire sans courir avec recorsive fnction sur tous les arbres à chaque fois que l'utilisateur vérifie certains nœud?
Grâce
//cette fonction renvoie le treeView.
public TreeView GetTreeView()
{
getSubject();
//fill the treeview with all subjects.
foreach (Subject subject in subjects)
{
//for each root subject fill all the his children.
if (subject.subjestId == subject.parentSubject)
{
TreeNode node = new TreeNode(subject.subjectString, subject.subjestId, subject.subjestId);
addChild(node, subject.subjestId);
tv.Nodes.Add(node);
}
}
return tv;
}
//for each subject return sub subjects.
private void addChild(TreeNode node, int parentId)
{
foreach (Subject subject in subjects)
{
if (subject.parentSubject == parentId && subject.parentSubject != subject.subjestId)
{
TreeNode childNode = new TreeNode(subject.subjectString, subject.subjestId, subject.subjestId);
addChild(childNode, subject.subjestId);
node.Nodes.Add(childNode);
}
}
}
- que la question est absente de l'interface graphique de la plateforme (WinForms, WPF et ASP.NET tous ont leur propre, différente, TreeViews)
Vous devez vous connecter pour publier un commentaire.
La récursivité. Comme ceci:
busy
drapeau ? Pourrait-il être utile dans d'autres partie du code ? 🙂if(busy) return;
ligne... je suis très distrait (ou peut-être un peu endormie) ! 😛C'est une meilleure solution
Comme un certain nombre de réponses de l'état, de créer un recursive 'ensemble vérifié pour les enfants" de la fonction, puis l'appeler AfterCheck sur l'arbre.
Le cadre malheureusement vous donne un retour d'appel à AfterCheck même si vous définissez la valeur de contrôle dans le code, et même si cela peut ne pas être perceptible dans les petits arbres ajoute une quantité massive de l'exponentielle de travail supplémentaire pour votre application pour le faire. Pour l'éviter, filtre AfterCheck seulement le feu de votre nouvelle fonction, si elle a été déclenchée par l'utilisateur.
Si vous voulez le faire en WinForms alors je pense que vous devez le faire manuellement par récurrence - je ne connais pas de meilleure façon.