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

您的问题是“物理”节点不是“主题”节点的直接子节点,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 */
于 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 回答
1

你可以用这个

tvTree.Nodes["Subjects"].Nodes["Physics"].Add("PhysicsP1", "Paper1");
于 2015-05-14T13:44:02.013 回答