• winfrom 树勾选


    树勾选

            /// <summary>
            /// 树勾选
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tvCourse_AfterCheck(object sender, TreeViewEventArgs e)
            {
                if (e.Action ==TreeViewAction.ByMouse)
                {
                    if (e.Node.Checked)
                    {
                        SetChildNode(e.Node, true);
                        if (null!= e.Node.Parent)
                        {
                            SetParentNode(e.Node, true);
                        }
                    }
                    else
                    {
                        //取消节点选中状态之后,取消所有父节点的选中状态
                        SetChildNode(e.Node, false);
                        //如果节点存在父节点,取消父节点的选中状态
                        if (e.Node.Parent != null)
                        {
                            SetParentNode(e.Node, false);
                        }
                    }
                }
            }
            /// <summary>
            /// 设置父节点
            /// </summary>
            /// <param name="node">当前节点</param>
            /// <param name="state">状态</param>
            private void SetParentNode(TreeNode node, bool state)
            {
                TreeNode pNode = node.Parent;
                if (null != pNode)
                {
                    pNode.Checked = state;
                    bool flag = false;
                    foreach (TreeNode currNode in pNode.Nodes)
                    {
                        if (!currNode.Checked)  //控制父节点全选,父节点选中去掉!
                        {
                            flag = false;
                            pNode.Checked = flag;
                            break;
                        }
                        //SetParentNode(item, state);
                    }
                    SetParentNode(pNode, flag);
                    
                }
            }
            /// <summary>
            /// 设置子节点
            /// </summary>
            /// <param name="node">当前节点</param>
            /// <param name="state">状态</param>
            private void SetChildNode(TreeNode node, bool state)
            {
                TreeNodeCollection tncNodes = node.Nodes;
                if (tncNodes.Count>0)
                {
                    foreach (TreeNode currNode in tncNodes)
                    {
                        currNode.Checked = state;
                        SetChildNode(currNode, state);
                    }
                }
            }
    View Code
  • 相关阅读:
    Change MYSQL data directory
    Docker distrubution in django
    mongo&node
    理解Docker单机容器网络
    auto dock
    django_restframework_angularjs
    Javascript异步编程的4种方法
    DockerProblem
    Javascript面向对象编程
    scrapy post请求 multipart/form-data
  • 原文地址:https://www.cnblogs.com/love201314/p/6232796.html
Copyright © 2020-2023  润新知