【问题标题】:Deleting treenodes in treeview without deleting their children in c#在树视图中删除树节点而不在c#中删除它们的子节点
【发布时间】:2018-04-17 04:35:04
【问题描述】:

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

假设“root-->path1-->path1.1-->path1.2”是树视图中的路径之一。删除节点“path1”时,应该只删除这个节点,而不是“path1.1”和“path1.2”。根节点应该成为这两个节点的父节点。

到目前为止,我使用的这段代码删除了节点及其所有子节点:

treeView1.Nodes.Remove(node);

有什么办法可以做到吗?

【问题讨论】:

  • 在删除当前父节点之前更改这些节点的父节点。
  • 这也是我的第一个想法,但是父属性是只读的
  • 要改变一个节点的父节点,你应该把它添加到另一个节点的Nodes集合中。

标签: c# winforms treeview


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    相关资源
    最近更新 更多