您的位置:首页 > 其它

如何移除TreeView中的所有选中节点

2010-12-23 10:01 671 查看
递归方法,整体思路是:首先对根节点下的所有子节点做一个循环,在循环体里边,判断该子节点是否是叶节点,是的话就移除该节点,并且将子节点数count减一,计数器i也减一,否则就递归调用方法traverse ( childNode )并重新获取该节点的子节点数(childCount = childNode.ChildNodes.Count;)判断该节点的子节点数是否为0,是的话就移除该节点
// 获得TreeView的根节点

TreeNode node = TreeView.Nodes [0];

// 递归方法

traverse ( node );

/// <summary>

/// 递归移除所有选中的节点

/// </summary>

/// <param name="parentNode"></param>

private void traverse ( TreeNode parentNode )

{

int count = parentNode.ChildNodes.Count;

for ( int i = 0 ; i < count ; i++ )

{

TreeNode childNode = parentNode.ChildNodes [i];

// 移除之前的子节点数

int childCount = childNode.ChildNodes.Count;

// 移除算法

if ( childCount > 0 )

{

// 递归调用

traverse ( childNode );

// 移除之后剩余的子节点

childCount = childNode.ChildNodes.Count;

}

else if ( childNode.ChildNodes.Count == 0 && childNode.Checked )

{

// 您要做的其他操作

// 移除被选中的节点

parentNode.ChildNodes.Remove ( childNode );

--count;

--i;

}

// 移除被选中的父节点(如果父节点的子节点数为0,父节点也要移除)

if ( childCount == 0 )

{

parentNode.ChildNodes.Remove ( childNode );

--count;

--i;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐