C# - TreeView: l'insertion de nœud à certaine position
Comment insérer un nouvel enfant à un nœud particulier dans un TreeView en C#, WinForms?
J'ai été maladroitement coup de poignard à TreeViews pendant près d'une heure et je voudrais utiliser C#'s Arborescence comme ceci:
treeView.getChildByName("bob").AddChild(new Node("bob's dog"));
Voici ce que j'ai essayé hier (qui je pense est au niveau de la pilosité qui C# ne doit jamais m'ont permis d'atteindre):
tree.Nodes[item.name].Nodes.Add(new TreeNode("thing"));
Inutile de dire, il ne fonctionne pas.
Oh, et voici un paresseux question: "peut-on stocker des objets dans ces nœuds? Ou ne TreeNode uniquement en charge les chaînes et autres joyeusetés? (dans ce cas, je devrais prolonger TreeNode.. /soupir)
S'il vous plaît aider, merci!
Si vous êtes libre de choisir, de prendre un coup d'oeil à WPF. Vous pouvez modéliser vos données comme vous le souhaitez et de le lier à l'Arborescence.
Oh, mec, je voudrais passer à WPF dans un battement de cœur si je devais avoir l'option.. Pour commencer, quoi que ce soit avec l'aide de XML est un pas en avant.
Oh, mec, je voudrais passer à WPF dans un battement de cœur si je devais avoir l'option.. Pour commencer, quoi que ce soit avec l'aide de XML est un pas en avant.
OriginalL'auteur Spectraljump | 2010-12-01
Vous devez vous connecter pour publier un commentaire.
En effet ton code devrait fonctionner - pour ajouter un sous-nœud que vous venez de faire:
Peut-être que le problème est dans la façon dont vous référer à votre nœuds existants.
Je suppose que l'arbre.Les nœuds[point.Nom] a retourné null?
Pour que cette indexeur pour trouver le nœud, vous devez spécifier une clé lors de l'ajout du nœud. Avez-vous préciser le nom du nœud comme une clé? Par exemple, le code suivant fonctionne pour moi:
Si ma réponse ne fonctionne pas, pouvez-vous ajouter plus de détails sur ce qui arrive? Avez-vous une exception ou n'a tout simplement rien ne se passe?
PS: afin de stocker un objet dans un nœud, au lieu d'utiliser la Balise de propriété, vous pouvez également dériver votre propre classe TreeNode et de stocker quoi que ce soit. Si vous êtes à l'élaboration d'une bibliothèque, c'est plus utile, parce que vous êtes en laissant la propriété Tag pour vos utilisateurs à utiliser.
Couru
tree.Nodes[item.Name]
était en effet de retourner la valeur null (bien qu'il m'a fallu un certain temps pour le comprendre). Je ne sais pas comment définir une clé d'index comme vous l'a montré. C'était mon problème; j'ai aussi eu un "non reliés" question qui me confond encore), mais je ne pouvais pas aller chercher le nœud où je voulais insérer. Merci encore.OriginalL'auteur Ran
Vous pouvez utiliser Insert au lieu d'Ajouter.
OriginalL'auteur Davita
Bien, pour commencer, oui, vous pouvez stocker des objets dans chaque nœud. Chaque nœud a une
Tag
propriété de typeobject
.Ajout de nœuds devrait être assez simple. Selon MSDN:
Concernant votre Edit, je ne vais pas avoir un "SelectedNode" pour l'ajouter. De sorte que la méthode (dont j'ai lu d'ailleurs) n'aide pas..
Ah...on dirait Ran a quelques bons exemples et apparaissent comme si elles allaient de travail - pas besoin pour moi de ressasser ce qu'il a fait. 🙂
OriginalL'auteur IAbstract
Sinon, si Davita n'est pas la solution idéale, vous avez besoin de conserver une référence pour les nœuds, donc si vous avait une référence à bob vous pourriez ajouter bob le chien de
TreeNode bob= new TreeNode("bob");
treeView1.Les nœuds.Ajouter(bob);
bob.Les nœuds.Add(new TreeNode("Chien"));
OriginalL'auteur Jeremy Thompson