WinForms中的TreeView错误

3
我有三个按钮,一个文本框和一个树形视图。我正在动态添加节点到树形视图中。我使用了一些代码,并且对于第一个(根)按钮它可以工作。但是对于其他两个按钮则会显示“对象引用未设置为对象的实例”错误。我的三个按钮是:添加根节点、添加子节点、删除。
我的代码:
private void button1_Click(object sender, EventArgs e)
{
    TreeNode t;
    t = treeView1.Nodes.Add(textBox1.Text);
}

private void button2_Click(object sender, EventArgs e)
{
    TreeNode t;
    t = treeView1.SelectedNode;
    t.Nodes.Add(textBox1.Text);
    treeView1.SelectedNode.ForeColor = Color.Red;
}

private void button3_Click(object sender, EventArgs e)
{     
    treeView1.SelectedNode.Remove();
}

你应该为新问题创建一个新的提问,因为这个已经被标记为已回答。这将有助于其他人在未来搜索此错误时找到与标题/原始问题相关的答案。 - pstrjds
谢谢您的好建议。 - jeni
可能是WinForms中TreeView错误的重复问题 - Rowland Shaw
3个回答

1
可能的问题是,在删除或添加子节点之前,您没有在树形视图节点中选择新添加/现有的项目。
在执行添加子项之前,请检查t是什么。
第一次它可以工作,因为根已被选中,下一次不起作用,因为新添加的项目不再被选中。

1

当您在此时没有选择任何项时访问treeView1.SelectedNode,会抛出异常。

解决方法可能是:

private void button3_Click(object sender, EventArgs e)
{
    if (treeView1.SelectedNode != null)
        treeView1.SelectedNode.Remove();
}

0

这可能是因为您没有选择任何内容,您可以告诉用户进行选择,或者您可以手动选择。

private void button3_Click(object sender, EventArgs e)
{
    if (treeView1.SelectedNode != null)
        treeView1.SelectedNode.Remove();
   else
      Messagebox.Show ("Please select the node first");
}

private void button1_Click(object sender, EventArgs e)
    {
        TreeNode t;
        t = treeView1.Nodes.Add(textBox1.Text);
        treeView1.SelectedNode = t;

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接