treeview 節點 父節點 遞歸

        //取消節點選中狀態之後,取消所有父節點的選中狀態
        private void setParentNodeCheckedState(TreeNode currNode, bool state)
        {
            TreeNode parentNode = currNode.Parent;


            parentNode.Checked = state;
            if (currNode.Parent.Parent != null)
            {
                setParentNodeCheckedState(currNode.Parent, state);
            }
        }
        //選中節點之後,選中節點的所有子節點
        private void setChildNodeCheckedState(TreeNode currNode, bool state)
        {
            TreeNodeCollection nodes = currNode.Nodes;
            if (nodes.Count > 0)
                foreach (TreeNode tn in nodes)
                {


                    tn.Checked = state;
                    setChildNodeCheckedState(tn, state);
                }
        }


        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Checked)
            {
                //取消節點選中狀態之後,取消所有父節點的選中狀態
                setChildNodeCheckedState(e.Node, true);


            }
            else
            {
                //取消節點選中狀態之後,取消所有父節點的選中狀態
                setChildNodeCheckedState(e.Node, false);
                //如果節點存在父節點,取消父節點的選中狀態
                if (e.Node.Parent != null)
                {
                    setParentNodeCheckedState(e.Node, false);
                }
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章