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

        ///


        /// 获取所有选中节点
        ///

        ///
        ///
        public static void   GetCheckedNode(TreeNodeCollection  trCollection ,List listNode)
        {
            foreach(TreeNode trNode in trCollection)
            {
                if (trNode.Checked)
                    listNode.Add(trNode);
                if (trNode.Nodes.Count > 0)
                    GetCheckedNode(trNode.Nodes, listNode); 
            }
        }

 

        ///


        /// 当前节点选中,其所有子节点选中
        ///

        ///
        ///
        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;
        }


        ///


        /// 当前节点选中,其所有父节点选中
        ///

        ///
        ///
        public static void SetParentNodeStyle(TreeNode Node)
        {
            if (Node.Parent == null) return;
            if (Node.Checked)
            {
                Node.Parent.Checked = true;
                SetParentNodeStyle(Node.Parent);
            }
        }


        ///


        /// 某节点所有子节点选中,该节点选中
        ///

        ///
        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);
        }

       
        ///


        /// 根据节点ID从TreeView中找到该节点 适用于没有重复ID的数据
        ///

        ///
        ///
        ///

        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;
        }

       ///


        /// 清空选中节点
        ///

        ///
        ///
        public static void SetTreeViewNodeChecked(TreeNode trNode)
        {
            foreach(TreeNode tr in trNode.Nodes)
            {
                tr.Checked = false;

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

 

 

你可能感兴趣的:(C#)