`
net_liu
  • 浏览: 232686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TreeList 树形控件 实现带三种状态的CheckBox

 
阅读更多

TreeList 树形控件 实现带三种状态的CheckBox

 

树形控件是使用频率很高的一种控件。对于属性控件往往需要下面两个功能

1.TreeList带有CheckBox,并且节点要有三种状态(所有的子节点都选中,所有的子节点都没选择,一部分子节点选中)。使用 DevXpress的TreeList控件很容易实现这一功能。

设置TreeList.OptionsView.ShowCheckBoxes = true            //是否显示CheckBox

设置TreeList.OptionsBehavior.AllowIndeterminateCheckState = true;         //设置节点是否有中间状态,即一部分子节点选中,一部分子节点没有选中

设置这两个属性之后就实现了TreeList带有CheckBox,并且节点有三种状态。

2.选中父节点或者子节点相互影响的功能,如选择父节点选择所有子节点。绑定TreeList的两个事件AfterCheckNode和 BeforeCheckNode

实现功能的代码如下:

 

private void treeList1_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e)
        {
            SetCheckedChildNodes(e.Node, e.Node.CheckState);
            SetCheckedParentNodes(e.Node, e.Node.CheckState);

        }

        private void treeList1_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e)
        {
            e.State = (e.PrevState == CheckState.Checked ? CheckState.Unchecked : CheckState.Checked);
        }

        /// <summary>
        /// 设置子节点的状态
        /// </summary>
        /// <param name="node"></param>
        /// <param name="check"></param>
        private void SetCheckedChildNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check)
        {
            for (int i = 0; i < node.Nodes.Count; i++)
            {
                node.Nodes[i].CheckState = check;
                SetCheckedChildNodes(node.Nodes[i], check);
            }
        }

        /// <summary>
        /// 设置父节点的状态
        /// </summary>
        /// <param name="node"></param>
        /// <param name="check"></param>
        private void SetCheckedParentNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check)
        {
            if (node.ParentNode != null)
            {
                bool b = false;
                CheckState state;
                for (int i = 0; i < node.ParentNode.Nodes.Count; i++)
                {
                    state = (CheckState)node.ParentNode.Nodes[i].CheckState;
                    if (!check.Equals(state))
                    {
                        b = !b;
                        break;
                    }
                }
                node.ParentNode.CheckState = b ? CheckState.Indeterminate : check;
                SetCheckedParentNodes(node.ParentNode, check);
            }
        }
 
分享到:
评论

相关推荐

    VC 增强版TreeList树形列表控件.rar_Treelist控件_VC树形控件_treeListCtl_treelist_

    关于标签中提到的“vc树形控件”,这是指使用VC++进行开发时所使用的树形视图控件,通常是CTreeCtrl类。而“treelistctl”和“treelist”则是对特定实现的TreeList控件的简称,可能是指第三方库或者自定义的控件类。...

    VC TreeList树形列表控件.zip

    它是一个列表的树控件。 以下是许多功能中的一些:CTreeListCtrl 兼容CTreeCtrl &CListCtrl 标题拖放 拖放在 CTreeListCtrl 透明拖拉窗口与Alpha混合 列表的双色 背景图 复选框支持 锁box支持 嵌入式...

    读取JSON格式转为DevExpress TreeList 树形(晨曦CZB)

    在.NET开发环境中,DevExpress TreeList控件是一种常用的用于展示数据的树形结构组件,尤其在Windows Forms应用程序中。本文将详细讲解如何从JSON格式的数据读取并转换为DevExpress TreeList的树形结构,以实现数据...

    jquery超漂亮树形控件

    标题"jquery超漂亮树形控件"暗示我们讨论的是一种美化过的jQuery实现的树形插件,它可能提供了独特的设计和良好的用户体验。这样的控件可以使网站或应用程序的导航更加直观和吸引人。 描述中的"jquery超漂亮树形...

    纯C的TreeList,可折叠可编辑树状多列列表

    TreeList是一种数据结构,它结合了树形结构和表格数据的特点,通常用于显示层次结构的数据,并且可以在每一层节点上展示多个属性。在本场景中,我们讨论的是一个纯C实现的TreeList,具备可折叠和可编辑的功能,这...

    树形控件和列表控件的结合

    在“树形控件和列表控件的结合”项目中,CListCtrl和CTreeCtrl被集成在同一对话框中,形成一种树形列表控件的结构。当用户在CTreeCtrl中选择某个节点时,对应的CListCtrl会更新显示与该节点相关的详细数据。这种设计...

    10个树形控件GridTreeView.rar

    ASPNETTreeGridViewEx控件树形GridView控件10.rar astreeview-1.5.8_for_ASP.Net_3.5.zip ASTreeView1.5.8发布(ASP.Net树控件)+Demo.rar cs treegridview.zip FlyTreeViewdll4.4.1.2.rar GridViewTreeSample.zip ...

    c# 带树形显示的下拉框

    在这种情况下,“带树形显示的下拉框”是一种很好的解决方案,它将传统的下拉框与树形视图的功能相结合,允许用户以更直观的方式浏览和选择数据。下面我们将深入探讨这个主题。 1. **控件设计** - **自定义控件**...

    TreeListWPF_树列表控件_

    TreeListWPF是一款专为Windows Presentation Foundation (WPF) 平台设计的树形列表控件,它结合了树视图和数据网格的功能,提供了一种高效且灵活的方式来展示层次结构的数据。在WPF开发中,这样的控件非常实用,因为...

    TreeList组合控件与TreeComboBOX组合控件的实现

    开发了 TreeList组合控件与TreeComboBOX组合控件 两种组合控件的应用,如需要源码 可以与本人联系

    TreeList控件类

    尽管只包含两个文件,但TreeList控件提供了丰富的功能和灵活性,使得开发者能方便地在应用程序中集成树形结构的列表展示。 首先,TreeList控件的核心特性是其树状结构,这种结构允许每个条目(节点)有零个或多个子...

    DevTreeList保存刷新前状态

    在这个场景中,"DevTreeList保存刷新前状态"指的是一个功能需求,即在对DevTreeList进行刷新操作之前,能够保存当前用户在树列表中的所有选择、展开和排序等状态,以便在刷新后能够恢复到之前的视图状态,提供良好的...

    Treelist使用实例(添加右击菜单)

    在 Treelist 控件中,我们需要设置 KeyFieldName 和 ParentFieldName 属性,以便 Treelist 控件能够正确地显示树形结构。 `this.treeList1.KeyFieldName = "ID";` `this.treeList1.ParentFieldName = "PARENTID";` ...

    delphi树列表控件

    在Delphi编程环境中,树列表控件(TreeList)是一种常用的UI组件,它结合了树形结构和列表视图的特点,使得数据展示更加灵活且直观。这种控件通常用于显示层次结构的数据,如文件系统、数据库记录或者组织结构等。在...

    自定义控件db Check TreeList源码

    总之,这个自定义控件db Check TreeList是一个增强版的树形列表控件,它在每个节点上增加了复选框功能,适用于需要多选操作的场景。开发者可以通过研究源代码和类图来学习如何自定义DevExpress的控件,以满足特定的...

    TreeList View 控件源码(C# VB.net)

    TreeList View 控件是.NET开发中常用的一种控件,它以树形结构显示数据,同时提供了类似表格的功能,如编辑和排序。这个源码包针对C#和VB.NET两种编程语言,提供了实现TreeList View控件功能的代码,使得开发者能够...

    Dev控件TreeList使用

    TreeList是一种控件,它将表格和树形视图的优点结合在一起,可以显示具有层级关系的数据,并且每个节点都可以拥有子节点,形成一个可展开/折叠的树状结构。在`Dev`环境中,TreeList提供了丰富的功能,如排序、分页、...

    Web TreeList控件

    这种控件以其直观的树形结构,使得用户能够轻松地浏览和操作大量数据,提高了用户体验。在ASP.NET环境中,Web TreeList控件是一个常用的服务器控件,它提供了丰富的功能和高度的自定义能力。 首先,我们要理解Web ...

    DevTreeList控件使用经典

    DevTreeList 控件是 DevExpress 提供的一种高级树形列表控件,它可以用来展示具有层级关系的数据,并支持多种交互操作,如折叠、展开节点等。本文档主要介绍了如何使用 DevTreeList 控件来创建和管理一个具有多级...

    Android多级树形列表控件

    为了实现多级树形列表,我们需要构建一个能够递归处理节点关系的自定义控件。在提供的代码中,可以看到`MainActivity`类中初始化了一个名为`treeLv`的ListView,并且创建了一个自定义的适配器`MyTreeListViewAdapter...

Global site tag (gtag.js) - Google Analytics