如何通过单击按钮分别选中或取消选中所有父节点和子节点
本文关键字:父节点 子节点 取消 按钮 何通过 单击 | 更新日期: 2023-09-27 18:27:53
我有一个树视图,它有一些父节点和子节点。我有四个按钮。其中两个按钮属于已选中和未选中的仅父节点,两个按钮是子节点。如果单击btnAllParentChecked
,则仅选中父节点;如果单击btnAllparentUnchecked
,则不选中,对于子节点也是如此。我已经为子节点编写了一些代码。
Boolean bChildTrigger = true;
Boolean bParentTrigger = true;
private void CheckAllChildren(TreeNodeCollection trNodeCollection, Boolean bCheck)
{
bParentTrigger = false;
foreach (TreeNode ctn in trNodeCollection)
{
bChildTrigger = false;
ctn.Checked = bCheck;
bChildTrigger = true;
CheckAllChildren(ctn.Nodes, bCheck);
}
bParentTrigger = true;
}
private void btnAllPropertyChecked_Click(object sender, EventArgs e)
{
CheckAllChildren(treSelector.Nodes, true);
}
private void btnAllPropertyUnChecked_Click(object sender, EventArgs e)
{
CheckAllChildren(treSelector.Nodes, false);
}
如何在树视图中实现此功能?
这就是您所需要的。测试良好
private void ChangeNodesSelection(TreeNodeCollection node,bool doCheck)
{
foreach (TreeNode n in node)
{
n.Checked = doCheck;
if (n.Nodes.Count > 0)
{
ChangeNodesSelection(n.Nodes,doCheck);
}
}
}
private void UncheckParentNodes(TreeNodeCollection node)
{
foreach (TreeNode n in node)
{
if (n.Parent == null && n.Nodes.Count == 0)
n.Checked = false;
}
}