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