您的位置:首页 > 编程语言 > C#

C#winfrom 中 TreeView 控件中带checkbox,怎么实现在父节点上打勾,选中全部子节点?

2014-08-28 18:11 666 查看

//设置标志,防止死循环

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)

                {

                    node.Parent.Checked = false;

                    return;

               }

            }

        node.Parent.Checked = node.Checked;

       }

      else   node.Parent.Check = false;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐