treeview 父子节点联动

来源:互联网 发布:seo网络优化师 编辑:程序博客网 时间:2024/05/17 20:29
        #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

原创粉丝点击