//设置标志,防止死循环
bool check = false
//节点勾选后事件,如果更改某一节点状态会自动触发,所以在后面的方法中无需递归
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if(check==false)
setchild(e.Node)
setparent(e.Node)
check = false
}
//设置子节点状态
private void setchild(TreeNode node)
{
foreach (TreeNode child in node.Nodes)
{
child.Checked = node.Checked
}
check = true
}
//设置父节点状态
private void setparent(TreeNode node)
{
if (node.Parent != null)
{
//如果当前节点状态为勾选,则需要所有兄弟节点都勾选才能勾选父节点
if (node.Checked)
foreach (TreeNode brother in node.Parent.Nodes)
{
if (brother.Checked == false)
return
}
node.Parent.Checked = node.Checked
}
}
body也还是有子节点, 这些子节点大多数都是换行符, 因为html标签之间的换行符也是一种节点类型: 文本节点body也还是有子节点, 这些子节点大多数都是换行符, 因为html标签之间的换行符也是一种节点类型: 文本节点body也还是有子节点, 这些子节点大多数都是换行符, 因为html标签之间的换行符也是一种节点类型: 文本节点body也还是有子节点, 这些子节点大多数都是换行符, 因为html标签之间的换行符也是一种节点类型: 文本节点。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)