在树视图中删除treenodes而不删除c#中的子节点

时间:2018-04-17 04:35:05

标签: c# winforms treeview

我试图在c#中删除树视图中的一个特定节点。它应该执行以下操作:

让我们说" root - > path1 - > path1.1 - > path1.2"是树视图中的路径之一。当删除节点" path1"时,它应该只删除这个节点,而不是'#34; path1.1"和" path1.2"。根节点应该成为这两个节点的父节点。

到目前为止,我使用此代码删除了包含其所有子节点的节点:

treeView1.Nodes.Remove(node);

我有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您可以更改这些节点'父母在删除他们当前的父母之前例如:

var selected = this.treeView1.SelectedNode;
TreeNodeCollection container;
if (selected.Parent == null)
    container = treeView1.Nodes;
else
    container = selected.Parent.Nodes;
var list = selected.Nodes.Cast<TreeNode>().ToList();
foreach (TreeNode n in list)
{
    n.Remove();
    container.Add(n);
}
selected.Remove();