2012-07-04 2 views
2

Я использую элемент управления TreeView в WinForm.Проблема с ключевыми словами TreeNode

Я пытаюсь использовать следующий код, но получаю «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

Кроме того, вы можете добиться этого с

 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"); 
+0

Спасибо Emre! У меня появилась идея от вас и Остина. – IrfanRaza

4

Ваша проблема в том, что узлы «Физика» не являются прямыми детьми 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"); 

Если у вас есть только имя, вы можете использовать Find:

var parentName = "from wherever"; 

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

/* handle multiple results */ 
/* add children */ 
+0

Спасибо Остин! Код идеален, если я знаю дочерние узлы. Я фактически получаю узлы из базы данных с их уровнями. – IrfanRaza

+0

ОК, понял, позвольте мне попробовать. – IrfanRaza

1

Вы можете использовать этот

tvTree.Nodes["Subjects"].Nodes["Physics"].Add("PhysicsP1", "Paper1"); 
Смежные вопросы