删除treeView中的空根节点

时间:2013-07-19 14:19:30

标签: c# winforms visual-studio-2010 treeview

假设我有3个类别的树,每个类别有3个子节点。当所有子节点都被删除时,我想删除根节点。我试过这样的事情:

        TreeNode current = treeView1.SelectedNode;
        TreeNode parent  = treeView1.SelectedNode.Parent;

        if (parent.Nodes.Count == 0)
        {
            parent.Nodes.Remove(current);
        }

我把它放在Form1_Load中。不幸的是,当所有子节点都没有发生时,没有任何反应。这段代码是否正确?或者我可能放错了地方,我应该把它放在其他地方?

编辑:我的树看起来像这样:

上午

  • 刷牙
  • 喝咖啡

下午

  • 晚餐
  • TV

  • 睡眠

所以,如果我决定删除“睡眠”,我也想删除“Night”。但如果我决定删除“电视”,我想保留“晚餐”和“下午”。

2 个答案:

答案 0 :(得分:1)

如果父级为null,则表示您在根节点上。因此需要直接从TreeView的Nodes集合中删除该节点。否则,您只需从父项中删除所选节点即可。甚至没有理由查看节点数。

现在,您还需要检查当前节点是否也为空;因为选择树中没有节点是完全合理的。

TreeNode current = treeView1.SelectedNode;
if(current == null)
    return;

TreeNode parent  = treeView1.SelectedNode.Parent;
if (parent == null)
{
    treeView1.Nodes.Remove(current);
}
else
{
    parent.Nodes.Remove(current);
}

答案 1 :(得分:1)

试试这个:

if (treeView1.SelectedNode != null)
{
    if (treeView1.SelectedNode.Parent == null) treeView1.SelectedNode.Remove();
    else if (treeView1.SelectedNode.Parent.Nodes.Count == 1) treeView1.SelectedNode.Parent.Remove();
    else treeView1.SelectedNode.Remove();
}