C# TreeNode关键问题

C# TreeNode关键问题,c#,winforms,C#,Winforms,我正在WinForm中使用TreeView控件 我试图使用以下代码,但得到的是“NullReferenceException”。 我遵循提供的语法,即tree.Nodes[key].Nodes.Add(key,text) 我不知道代码有什么问题 请看一下我使用的代码- tvTree.Nodes.Add("Subjects", "Subjects"); tvTree.Nodes["Subjects"].Nodes.Add("Physics", "Physics"); tvTree.Nodes["

我正在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");
谢谢分享您的时间。

您的问题是,“物理”节点不是
tvTree
的直接子节点,而是“主题”节点的子节点。使这更容易的是,它返回一个树节点,您可以稍后引用它

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");
如果您只有名称,则可以使用:


你也可以通过

        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");
你可以用这个

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

谢谢你,奥斯汀!如果我知道子节点,代码就完美了。我实际上是从数据库中获取节点及其级别。谢谢Emre!我从你和奥斯汀那里得到了这个主意。
tvTree.Nodes["Subjects"].Nodes["Physics"].Add("PhysicsP1", "Paper1");