/ / Ключове питання TreeNode - c #, winforms

Тема ключа TreeNode - c #, winforms

Я використовую управління TreeView у WinForm.

Я намагаюся використовувати наступний код, але отримую "NullReferenceException". Я стежу за наданим синтаксисом, тобто tree.Nodes[key].Nodes.Add(key,text)

Я не знаю, що не так з кодом.

Перегляньте код, який я використав -

tvTree.Nodes.Add("Subjects", "Subjects");
tvTree.Nodes["Subjects"].Nodes.Add("Physics", "Physics");

tvTree.Nodes["Physics"].Nodes.Add("PhysicsP1", "Paper1");
tvTree.Nodes["Physics"].Nodes.Add("PhysicsP2", "Paper2");
tvTree.Nodes["Physics"].Nodes.Add("PhysicsP3", "Paper3");

Дякуємо, що поділилися вашим часом.

Відповіді:

4 для відповіді № 1

Також ви можете досягти цього за допомогою

        tvTree.Nodes.Add("Subjects", "Subjects");
tvTree.Nodes["Subjects"].Nodes.Add("Physics", "Physics");

var phyNode = tvTree.Nodes.Find("Physics", true).First();

phyNode.Nodes.Add("PhysicsP1", "Paper1");
phyNode.Nodes.Add("PhysicsP2", "Paper2");
phyNode.Nodes.Add("PhysicsP3", "Paper3");

4 для відповіді № 2

Ваша проблема полягає в тому, що вузли "Фізика" не є прямими дітьми tvTree але натомість це діти вузла "Предмети". Що має полегшити, це те, що це TreeNodeCollection.Add повертає TreeNode, на який можна посилатися згодом.

var subjects = tvTree.Nodes.Add("Subjects", "Subjects");
var physics = subjects.Nodes.Add("Physics", "Physics");

physics.Nodes.Add("PhysicsP1", "Paper1");
physics.Nodes.Add("PhysicsP2", "Paper2");
physics.Nodes.Add("PhysicsP3", "Paper3");

Якщо у вас є лише ім’я, ви можете використовувати Знайдіть:

var parentName = "from wherever";

var parentNodes = tvTree.Nodes.Find(parentName, true);

/* handle multiple results */
/* add children */

1 для відповіді № 3

Ви можете використовувати це

tvTree.Nodes["Subjects"].Nodes["Physics"].Add("PhysicsP1", "Paper1");