private bool treeCheckUpdating = false;
private void treeViewControlCells_AfterCheck(object sender, TreeViewEventArgs e)
{
if (treeCheckUpdating == true)
{
return;
}
if(e.Node.Parent != null)//the selected node is not the topmost node
{
treeCheckUpdating = true;
foreach (TreeNode node in e.Node.Parent.Nodes)
{
node.Checked = e.Node.Checked;
}
treeCheckUpdating = false;
// check parent level nodes simultaneously
e.Node.Parent.Checked = true;
}// end of if(e.Node.Parent != null)//the selected node is not the topmost node
// if it is uncheck, then uncheck all the child nodes simultaneously
treeCheckUpdating = true;
if (e.Node.Checked == false && e.Node.Nodes != null)
{
UncheckChildNodes(e.Node);
}
treeCheckUpdating = false;
}
private void UncheckChildNodes(TreeNode node)
{
if(node.Nodes != null)
{
foreach(TreeNode n in node.Nodes)
{
n.Checked = false;
UncheckChildNodes(n);
}
}
}// end of private void UncheckChildNodes(TreeNode node)
本文介绍了一种在树视图中实现节点状态同步的方法,包括如何在改变一个非顶层节点的状态时同步更新其所有子节点及父节点的状态,以及如何在取消选中节点时递归地取消选中所有子节点。
199

被折叠的 条评论
为什么被折叠?



