这几天在用winform写一个通用的菜单管理的类库文件,在测试代码时才发现winform下的treeview点击CheckBox时不会级联选中,真是郁闷,没办法就得自己控制级联选中的情况,为了满足自己的需求就写了两个关于级联选中的方法,为了便于以后查找方便就发到博文上,也希望这两个方法能够帮上大家,当然对于树的操作还是用了常用的递归方法,代码如下:
第一种需求:点击treeNode时CheckBox关联选取(只要有子节点被选中父节点就显示选中状态)
private void SetNodeChecked(TreeNode tn, bool Checked)
{
if (tn == null) return;
// 设置子节点状态
foreach (TreeNode tnChild in tn.Nodes)
{
tnChild.Checked = Checked;
//递归设置字节点状态与父节点状态一致
SetNodeChecked(tnChild, Checked);
}
// 设置父节点状态
TreeNode tnParent = tn;
int nNodeCount = 0;
//循环设置父节点状态
while (tnParent.Parent != null)
{