private void CheckCurrentnode(TreeNode node0,bool Tempbool)  
{
foreach(TreeNode m in node0.Nodes)
{
if (Tempbool)
{
m.Checked=true;
node0.ExpandAll();//展开结点
}
else
{
m.Checked=false;
node0.Collapse();折合结点
}

if(m.Nodes.Count>0 && m.Checked==true)
{
foreach(TreeNode n in m.Nodes)
{
CheckCurrentnode(n,m.Checked);
}
}
} }
参考这个例子根据自己要的修改吧,程序一定正确