点击一个子节点也会选择父节点,实现了全选功能。
public void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
foreach (TreeNode node in treeNode.Nodes)
{
node.Checked = nodeChecked;
if (node.Nodes.Count > 0)
{
this.CheckAllChildNodes(node, nodeChecked);
}
}
}
public void CheckAllParentNodes(TreeNode td, bool check)
{
if (td.Parent != null)
{
td.Parent.Checked = HasChildChecked(td.Parent);
CheckAllParentNodes(td.Parent, check);
}
}
public bool HasChildChecked(TreeNode td)
{
foreach (TreeNode treenode in td.Nodes)
{
if (treenode.Checked)
return true;
HasChildChecked(treenode);
}
return false;
}
private void tree_list_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
CheckAllChildNodes(e.Node, e.Node.Checked);
CheckAllParentNodes(e.Node, e.Node.Checked);
}
}
本文介绍了一个递归算法,用于在树形结构中实现全选功能。点击任一子节点时,不仅该节点被选中,其所有上级节点也会被标记为选中状态,并更新其选中状态。
308

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



