(TreeView控件)节点的一些应用方法:获取选中节点;当前节点选中,其所有子节点选中; 当前节点选中,其所有子节点选中; 某节点所有子节点选中,该节点选中;

        /// <summary>
        /// 获取所有选中节点
        /// </summary>
        /// <param name="trCollection"></param>
        /// <param name="listNode"></param>
        public static void   GetCheckedNode(TreeNodeCollection  trCollection ,List<TreeNode> listNode)
        {
            foreach(TreeNode trNode in trCollection)
            {
                if (trNode.Checked)
                    listNode.Add(trNode);
                if (trNode.Nodes.Count > 0)
                    GetCheckedNode(trNode.Nodes, listNode); 
            }
        }



        /// <summary>
        /// 当前节点选中,其所有子节点选中
        /// </summary>
        /// <param name="tn"></param>
        /// <param name="Checked"></param>
        public static void SetNodeCheckStatus(TreeNode tn, bool Checked)
        {

            if (tn == null) return;
            foreach (TreeNode tnChild in tn.Nodes)
            {
                tnChild.Checked = Checked;

                SetNodeCheckStatus(tnChild, Checked);

            }
            //TreeNode tnParent = tn;
        }


        /// <summary>
        /// 当前节点选中,其所有父节点选中
        /// </summary>
        /// <param name="tn"></param>
        /// <param name="Checked"></param>
        public static void SetParentNodeStyle(TreeNode Node)
        {
            if (Node.Parent == null) return;
            if (Node.Checked)
            {
                Node.Parent.Checked = true;
                SetParentNodeStyle(Node.Parent);
            }
        }


        /// <summary>
        /// 某节点所有子节点选中,该节点选中
        /// </summary>
        /// <param name="Node"></param>
        public static void SetNodeStyle(TreeNode Node)
        {
            int nNodeCount = 0;
            if (Node.Nodes.Count != 0)
            {
                foreach (TreeNode tnTemp in Node.Nodes)
                {

                    if (tnTemp.Checked == true)

                        nNodeCount++;
                }

                if (nNodeCount == Node.Nodes.Count)
                {
                    Node.Checked = true;

                    Node.ForeColor = Color.Black;
                }
                else if (nNodeCount == 0)
                {
                    Node.Checked = false;

                    Node.ForeColor = Color.Black;
                }
                else
                {
                    Node.Checked = false;
                    Node.ForeColor = Color.Gray;
                }
            }
            //当前节点选择完后,判断父节点的状态,调用此方法递归。  
            if (Node.Parent != null)
                SetNodeStyle(Node.Parent);
        }

       
        /// <summary>
        /// 根据节点ID从TreeView中找到该节点 适用于没有重复ID的数据
        /// </summary>
        /// <param name="nNodeID"></param>
        /// <param name="trCollect"></param>
        /// <returns></returns>

        public static TreeNode GetTrNodeByValue(int nNodeID, TreeNodeCollection trCollect)
        {
            for (int i = 0; i < trCollect.Count; i++)
            {
                if (Convert.ToInt32(trCollect[i].Tag) == nNodeID)
                    return trCollect[i];
            }
            return null;
        }

       /// <summary>
        /// 清空选中节点
        /// </summary>
        /// <param name="trNode"></param>
        /// <returns></returns>
        public static void SetTreeViewNodeChecked(TreeNode trNode)
        {
            foreach(TreeNode tr in trNode.Nodes)
            {
                tr.Checked = false;

                if (tr.Nodes.Count > 0)
                {
                    SetTreeViewNodeChecked(tr);
                }
            }
        }




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值