如果添加子节点,为啥对象为空?
Posted
技术标签:
【中文标题】如果添加子节点,为啥对象为空?【英文标题】:Why does the object is null if adding a child node?如果添加子节点,为什么对象为空? 【发布时间】:2020-01-24 21:55:26 【问题描述】:我正在尝试添加一个子节点,但它说该对象未设置。
public void Test(TreeView tree)
tree.Nodes.AddRange(new TreeNode[] new TreeNode("ok"), new TreeNode("test"));
foreach (TreeNode node in tree.Nodes)
tree.Nodes["test"].Nodes.Add("a child node");
private void Button1_Click_1(object sender, EventArgs e)
Test(treeView1);
编辑:
我无法回答我自己的帖子,因为有人标记了它,但问题是我没有在 TreeNode 中设置属性 Name
工作版本是:
public void Test(TreeView tree)
tree.Nodes.AddRange(new TreeNode[] new TreeNode("ok") Name = "ok" , new TreeNode("test") Name = "test" );
foreach (TreeNode node in tree.Nodes)
tree.Nodes["test"].Nodes.Add(new TreeNode("a child node"));
感谢reza-aghaei
【问题讨论】:
初始化treeView1的代码在哪里? 创建"test"
节点的代码在哪里?您有 tree.Nodes["test"]
,但没有在我能看到的任何地方创建该节点。
@TerryTyson 这只是设计时添加的控件
@Amy 它是用tree.Nodes.AddRange
创建的
Node.Text
与 Node.Text
不同。 new TreeNode("test")
创建了一个具有Text = "test"
的节点,但tree["test"]
试图找到一个具有Name = "test"
的节点。
【参考方案1】:
这里的问题是你试图通过它的字符串键(映射到Name
属性)来访问一个节点,但是你从来没有设置Name
(只有Text
)。
试试这个:
tree.Nodes.AddRange(new[]
new TreeNode("ok") Name = "ok",
new TreeNode("test") Name = "test"
);
【讨论】:
是的,@Reza Aghaei 也这么说,thanxs以上是关于如果添加子节点,为啥对象为空?的主要内容,如果未能解决你的问题,请参考以下文章