分享

C# TreeView checkbox 联动打勾

 昵称9255533 2012-03-30
 原文来源:http://hi.baidu.com/jm_li_cn/blog/item/017d28c0d2f36e1ea08bb756.html
//下面-->将树的checkbox选中 tvDevice是treeview
          #region 将树的checkbox选中
        private void setNodeTrue(Node selNode) {
            Node node = selNode.Parent;
            if (node != null) {
                node.CheckState =  CheckState.Checked;
                setNodeTrue(node);
            }
        }
        #endregion
        #region 将树的checkbox选中
        private void setNodeStateTrue(Node selNode)
        {
            if (selNode.CheckBoxVisible)
            {
                selNode.CheckState =  CheckState.Checked;
                foreach (Node node in selNode.Nodes)
                {
                    setNodeStateTrue(node);
                }
            }
        }
        #endregion
        #region 将树的checkbox取消选中
        private void setNodeStateFalse(Node selNode)
        {
            if (selNode.CheckBoxVisible) {
                selNode.CheckState =  CheckState.Unchecked;
                foreach (Node node in selNode.Nodes)
                {
                    setNodeStateFalse(node);
                }
            }
        }
        #endregion
        #region 将树的checkbox取消选中
        private void setNodeFalse(Node selNode)
        {
            Node nextNode = selNode.NextNode;
            Node previousNode = selNode.PrevNode;
            Node praNode = selNode.Parent;
            if (praNode != null) {
                while (nextNode != null)
                {
                    if (nextNode.Checked)
                    {
                        return;
                    }
                    nextNode = nextNode.NextNode;
                }
                while (previousNode != null)
                {
                    if (previousNode.Checked)
                    {
                        return;
                    }
                    previousNode = previousNode.PrevNode;
                }
                praNode.CheckState =  CheckState.Unchecked;
                setNodeFalse(praNode);
            }
        }
        #endregion
 
 #region 单击树的checkbox事件
        private void tvDevice_AfterCheck(object sender, AdvTreeCellEventArgs e)
        {
            Node node = tvDevice.SelectedNode;
            //bool bo = node.Checked;      
            if (node.Checked)
            {
                setNodeTrue(node);
                setNodeStateTrue(node);
            }
            else {
                setNodeStateFalse(node);
                setNodeFalse(node);
            }
        }
        #endregion

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多