DEV TreeList的节点设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011609113/article/details/52918174

存个档,以后直接用了。

基本做到:1.选中父节点,子节点根据父节点选中状态调整自身状态。2选中子节点,父节点根据子节点的兄弟节点的状态调整自身状态。

 private void treeList1_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e)
        {

            PRV_SetState(!e.Node.Checked, e.Node);
        }

        private void treeList1_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e)
        {
            if (e.Node.CheckState == CheckState.Indeterminate)
                e.Node.CheckState = CheckState.Checked;
        }

   //递归设置选中状态
        private void PRV_SetState(bool IN_State, TreeListNode IN_CheckedNode)
        {
            if (IN_CheckedNode.HasChildren)
            {
                foreach (TreeListNode Each_Node in IN_CheckedNode.Nodes)
                {
                    PRV_SetState(IN_State, Each_Node);
                }
            }
            else
            {
                IN_CheckedNode.Checked = IN_State;
                PRV_SetParrent(IN_CheckedNode);
                
            }
        }
        //递归设置父节点状态
        private void PRV_SetParrent(TreeListNode IN_ChildNode)
        {
            if (IN_ChildNode.ParentNode == null)
            {
                return;
            }
            else
            {
                foreach (TreeListNode Each_BrotherNode in IN_ChildNode.ParentNode.Nodes)
                {
                    if (Each_BrotherNode.Checked != IN_ChildNode.Checked)
                    {
                        IN_ChildNode.ParentNode.CheckState = CheckState.Indeterminate;
                        return;
                    }
                }
                IN_ChildNode.ParentNode.Checked = IN_ChildNode.Checked;
                PRV_SetParrent(IN_ChildNode.ParentNode);
            }
        }


猜你喜欢

转载自blog.csdn.net/u011609113/article/details/52918174
Dev