天天看点

DevExpress 下TreeList下的节点复选框的显隐设置

TreeList控件节点复选框的显隐

一、初始化TreeList

private TreeList InitTreeList()
        {
            TreeList pTreeList = new TreeList();
            TreeListColumn treeListColumn1 = new TreeListColumn();
            pTreeList.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
            treeListColumn1});
            pTreeList.Dock = System.Windows.Forms.DockStyle.Fill;
            pTreeList.Location = new System.Drawing.Point(, );
            pTreeList.Name = "pTreeList";
            pTreeList.OptionsBehavior.Editable = false;
            pTreeList.OptionsClipboard.AllowCopy = DevExpress.Utils.DefaultBoolean.True;
            pTreeList.OptionsClipboard.CopyNodeHierarchy = DevExpress.Utils.DefaultBoolean.True;
            pTreeList.OptionsNavigation.AutoMoveRowFocus = true;
            pTreeList.OptionsView.ShowCheckBoxes = true;  //此处设置是重点
            pTreeList.OptionsView.ShowColumns = false;
            pTreeList.OptionsView.ShowHorzLines = false;
            pTreeList.OptionsView.ShowIndicator = false;
            pTreeList.OptionsView.ShowVertLines = false;
            pTreeList.Size = new System.Drawing.Size(, );
            pTreeList.TabIndex = ;
            pTreeList.AfterCheckNode += pTreeList_AfterCheckNode;
            pTreeList.CustomDrawNodeCheckBox += pTreeList_CustomDrawNodeCheckBox; //进行显隐实现
            // 
            // treeListColumn1
            // 
            treeListColumn1.Caption = "treeListColumn1";
            treeListColumn1.FieldName = "Name";
            treeListColumn1.MinWidth = ;
            treeListColumn1.Name = "treeListColumn1";
            treeListColumn1.Visible = true;
            treeListColumn1.VisibleIndex = ;

            return pTreeList;
        }
           

二、节点的显隐控制

private void pTreeList_CustomDrawNodeCheckBox(object sender, CustomDrawNodeCheckBoxEventArgs e)
        {
            HideCheckBox(n => !(n.Tag is CompareData || n.Tag is DataVersionInfo), e);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="conditionHanlder">传递要隐藏的符合条件的Lambda表达式</param>
        /// <param name="e"></param>
        private void HideCheckBox(Predicate<TreeListNode> conditionHanlder, CustomDrawNodeCheckBoxEventArgs e)
        {
            if (conditionHanlder(e.Node))
            {
                e.Handled = true;
            }
        }