// 获得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;
}
}
}