DEV TreeList的节点设置

来源:互联网 发布:雄鹰网校大数据 编辑:程序博客网 时间:2024/05/05 03:12

存个档,以后直接用了。

基本做到: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);            }        }


0 0