点击一个子节点也会选择父节点,实现了全选功能。
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);
}
}