2

WinFormでTreeViewコントロールを使用しています。

次のコードを使用しようとしていますが、「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

3 に答える 3

6

問題は、「Physics」ノードが直接の子ではtvTreeなく、「Subjects」ノードの子であることです。これを簡単にするのは、後で参照できる 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 */
于 2012-07-04T20:54:11.150 に答える
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");
于 2012-07-04T20:58:13.163 に答える