treeNode 选择性删除问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 14:27:19
我有一个树目录如下:

目录
目录一
子目录一 (红色)
子目录二
目录二
子目录一
子目录一
子目录二
子目录二 (红色)
目录三
目录四 (红色)
……

这个树是根据数据库中生成的,采用递归方法加入到TreeView中,红色的部分也是采用递归方法浏览所有树节点,然后根据条件更改了节点的前景颜色,我现在想把变成红色的节点和其父节点保留,其余的删除,想用一个递归方法做,不知道有没有好的算法!!!!

如下提供一个算法,但有点问题,就是如果父节点下的所有子节点都删除了,该父节点还是存在.

public bool DeleteNode(TreeNode node)
{
if (node.ForeColor == Color.Red)
{
return false;
}
if (node.Nodes.Count > 0)
{
foreach (TreeNode Node in node.Nodes)
{
if (DeleteNode(Node))
{
node.Nodes.Remove(Node);
}
}
return false;
}
else
{

最简单的方法:
在删除节点后重新遍历一下TreeView,做一个清除工作。

或者定义一个TreeView节点数更改的事件,然后遍历TreeView

总之使用要方便,程序就要复杂。

分数太低了