假设我有3个类别的树,每个类别有3个子节点。当所有子节点都被删除时,我想删除根节点。我试过这样的事情:
TreeNode current = treeView1.SelectedNode;
TreeNode parent = treeView1.SelectedNode.Parent;
if (parent.Nodes.Count == 0)
{
parent.Nodes.Remove(current);
}
我把它放在Form1_Load中。不幸的是,当所有子节点都没有发生时,没有任何反应。这段代码是否正确?或者我可能放错了地方,我应该把它放在其他地方?
编辑:我的树看起来像这样:
上午
下午
晚
所以,如果我决定删除“睡眠”,我也想删除“Night”。但如果我决定删除“电视”,我想保留“晚餐”和“下午”。
答案 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();
}