110,534
社区成员
发帖
与我相关
我的任务
分享
private void SetNodeCheckStatus(TreeNode tn, bool Checked)
{
if (tn == null) return;
// Check children nodes
foreach (TreeNode tnChild in tn.Nodes)
{
tnChild.Checked = Checked;
SetNodeCheckStatus(tnChild, Checked);
}
// Set parent check status
TreeNode tnParent = tn;
int nNodeCount = 0;
while (tnParent.Parent != null)
{
tnParent = (TreeNode)(tnParent.Parent);
nNodeCount = 0;
foreach (TreeNode tnTemp in tnParent.Nodes)
{
if (tnTemp.Checked == Checked)
{
nNodeCount++;
}
}
if (nNodeCount == tnParent.Nodes.Count)
{
tnParent.Checked = Checked;
}
else
{
tnParent.Checked = false;
}
}
}