private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
oMM.ToggleAllChildNodes(e.Node,e.Node.Checked);
treeView1.AfterCheck-=new TreeViewEventHandler(treeView1_AfterCheck);
oMM.ToggleAllParentNodes(e.Node,e.Node.Checked);
treeView1.AfterCheck+=new TreeViewEventHandler(treeView1_AfterCheck);
//遍历父结点 时取消事件以免无限循环
}
public void ToggleAllChildNodes(TreeNode CurrentNode ,bool NodeChecked)
{
foreach(TreeNode node in CurrentNode.Nodes)
{
node.Checked=NodeChecked;
if(node.Nodes.Count>0)
this.ToggleAllChildNodes(node,NodeChecked);
}
}
public void ToggleAllParentNodes(TreeNode CurrentNode ,bool NodeChecked)
{
if(NodeChecked)
{
CurrentNode.Checked=NodeChecked;
if(CurrentNode.Parent!=null)
{
this.ToggleAllParentNodes(CurrentNode.Parent,NodeChecked);
}
}
}
本文介绍了一个TreeView控件中实现节点状态同步的方法,包括如何递归地设置子节点和父节点的状态,以确保整个树结构的一致性。为避免事件循环,处理过程中暂时禁用了AfterCheck事件。
2953

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



