【问题标题】: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.TextNode.Text 不同。 new TreeNode("test") 创建了一个具有Text = "test" 的节点,但tree["test"] 试图找到一个具有Name = "test" 的节点。

标签: c# .net winforms treeview


【解决方案1】:

这里的问题是你试图通过它的字符串键(映射到Name 属性)来访问一个节点,但是你从来没有设置Name(只有Text)。

试试这个:

tree.Nodes.AddRange(new[]
    {
        new TreeNode("ok") {Name = "ok"},
        new TreeNode("test") {Name = "test"}
    });

【讨论】:

  • 是的,@Reza Aghaei 也​​这么说,thanxs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 2023-03-12
  • 2017-01-10
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
相关资源
最近更新 更多