如果要删除的currentnode子项是最后一个子项,则Treeview将删除父项

时间:2012-08-23 16:46:26

标签: c# winforms treeview

我无法从我的Tree中删除“current_node”的父节点。这是我正在尝试的: 我正在使用C#.NET开发VSTO

TreeGridNode current_node = myTreeGrid.CurrentNode;
TreeGridNode parent_node = myTreeGrid.CurrentNode.Parent;
// this works
myTreeGrid.Nodes.Remove(current_node);

if (parent_node.Nodes.Count == 0) {
    // it never gets here, it doesn't detect that the lats child was just removed above
    myTreeGrid.Nodes.Remove(parent_node);
}

使用此自定义结构 http://blogs.msdn.com/b/markrideout/archive/2006/01/08/510700.aspx

1 个答案:

答案 0 :(得分:2)

我认为您的问题是,您尝试从current_node而不是myTreeGrid的父级移除current_nodemyTreeGrid.Nodes未包含对current_node的引用,因此调用myTreeGrid.Nodes.Remove(current_node)基本上不执行任何操作。

由于没有删除任何内容,parent_node.Nodes仍然包含对current_node的引用。尝试直接从current_node删除parent_node.Nodes,您的问题可能会得到解决:

更改:

myTreeGrid.Nodes.Remove(current_node);

parent_node.Nodes.Remove(current_node);