treeview 节点 父节点 递归

来源:互联网 发布:mac 7z解压软件下载 编辑:程序博客网 时间:2024/05/17 06:10
        //取消节点选中状态之后,取消所有父节点的选中状态
        private void setParentNodeCheckedState(TreeNode currNode, bool state)
        {
            TreeNode parentNode = currNode.Parent;


            parentNode.Checked = state;
            if (currNode.Parent.Parent != null)
            {
                setParentNodeCheckedState(currNode.Parent, state);
            }
        }
        //选中节点之后,选中节点的所有子节点
        private void setChildNodeCheckedState(TreeNode currNode, bool state)
        {
            TreeNodeCollection nodes = currNode.Nodes;
            if (nodes.Count > 0)
                foreach (TreeNode tn in nodes)
                {


                    tn.Checked = state;
                    setChildNodeCheckedState(tn, state);
                }
        }


        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Checked)
            {
                //取消节点选中状态之后,取消所有父节点的选中状态
                setChildNodeCheckedState(e.Node, true);


            }
            else
            {
                //取消节点选中状态之后,取消所有父节点的选中状态
                setChildNodeCheckedState(e.Node, false);
                //如果节点存在父节点,取消父节点的选中状态
                if (e.Node.Parent != null)
                {
                    setParentNodeCheckedState(e.Node, false);
                }
            }
        }
原创粉丝点击