现在的位置: 首页 > 综合 > 正文

treeview 父子节点联动

2013年06月09日 ⁄ 综合 ⁄ 共 985字 ⁄ 字号 评论关闭
        #region treeview联动方法
        private void UpdateCheckStatus(TreeViewEventArgs e)
        {

            CheckAllChildNodes(e.Node);

            UpdateAllParentNodes(e.Node);

        }



        // updates all parent nodes recursively.

        private void UpdateAllParentNodes(TreeNode treeNode)
        {

            TreeNode parent = treeNode.Parent;

            if (parent != null)
            {

                if (parent.Checked && !treeNode.Checked)
                {

                    parent.Checked = false;

                    UpdateAllParentNodes(parent);

                }

                else if (!parent.Checked && treeNode.Checked)
                {

                    bool all = true;

                    foreach (TreeNode node in parent.Nodes)
                    {

                        if (!node.Checked)
                        {

                            all = false;

                            break;

                        }

                    }

                    if (all)
                    {

                        parent.Checked = true;

                        UpdateAllParentNodes(parent);

                    }

                }

            }

        }



        // updates all child tree nodes recursively.

        private void CheckAllChildNodes(TreeNode treeNode)
        {

            foreach (TreeNode node in treeNode.Nodes)
            {

                node.Checked = treeNode.Checked;

                if (node.Nodes.Count > 0)
                {

                    // If the current node has child nodes, call the CheckAllChildsNodes method recursively.

                    this.CheckAllChildNodes(node);

                }

            }

        }

        #endregion
        #region treeview上下级联动事件
        private void tvDevc_AfterCheck(object sender, TreeViewEventArgs e)
        {
            if (e.Action != TreeViewAction.Unknown)
            {

                UpdateCheckStatus(e);

            }

        }
        #endregion

抱歉!评论已关闭.