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树形控件”,这是指使用VC++进行开发时所使用的树形视图控件,通常是CTreeCtrl类。而“treelistctl”和“treelist”则是对特定实现的TreeList控件的简称,可能是指第三方库或者自定义的控件类。...
它是一个列表的树控件。 以下是许多功能中的一些:CTreeListCtrl 兼容CTreeCtrl &CListCtrl 标题拖放 拖放在 CTreeListCtrl 透明拖拉窗口与Alpha混合 列表的双色 背景图 复选框支持 锁box支持 嵌入式...
在.NET开发环境中,DevExpress TreeList控件是一种常用的用于展示数据的树形结构组件,尤其在Windows Forms应用程序中。本文将详细讲解如何从JSON格式的数据读取并转换为DevExpress TreeList的树形结构,以实现数据...
标题"jquery超漂亮树形控件"暗示我们讨论的是一种美化过的jQuery实现的树形插件,它可能提供了独特的设计和良好的用户体验。这样的控件可以使网站或应用程序的导航更加直观和吸引人。 描述中的"jquery超漂亮树形...
TreeList是一种数据结构,它结合了树形结构和表格数据的特点,通常用于显示层次结构的数据,并且可以在每一层节点上展示多个属性。在本场景中,我们讨论的是一个纯C实现的TreeList,具备可折叠和可编辑的功能,这...
在“树形控件和列表控件的结合”项目中,CListCtrl和CTreeCtrl被集成在同一对话框中,形成一种树形列表控件的结构。当用户在CTreeCtrl中选择某个节点时,对应的CListCtrl会更新显示与该节点相关的详细数据。这种设计...
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 ...
在这种情况下,“带树形显示的下拉框”是一种很好的解决方案,它将传统的下拉框与树形视图的功能相结合,允许用户以更直观的方式浏览和选择数据。下面我们将深入探讨这个主题。 1. **控件设计** - **自定义控件**...
TreeListWPF是一款专为Windows Presentation Foundation (WPF) 平台设计的树形列表控件,它结合了树视图和数据网格的功能,提供了一种高效且灵活的方式来展示层次结构的数据。在WPF开发中,这样的控件非常实用,因为...
开发了 TreeList组合控件与TreeComboBOX组合控件 两种组合控件的应用,如需要源码 可以与本人联系
尽管只包含两个文件,但TreeList控件提供了丰富的功能和灵活性,使得开发者能方便地在应用程序中集成树形结构的列表展示。 首先,TreeList控件的核心特性是其树状结构,这种结构允许每个条目(节点)有零个或多个子...
在这个场景中,"DevTreeList保存刷新前状态"指的是一个功能需求,即在对DevTreeList进行刷新操作之前,能够保存当前用户在树列表中的所有选择、展开和排序等状态,以便在刷新后能够恢复到之前的视图状态,提供良好的...
在 Treelist 控件中,我们需要设置 KeyFieldName 和 ParentFieldName 属性,以便 Treelist 控件能够正确地显示树形结构。 `this.treeList1.KeyFieldName = "ID";` `this.treeList1.ParentFieldName = "PARENTID";` ...
在Delphi编程环境中,树列表控件(TreeList)是一种常用的UI组件,它结合了树形结构和列表视图的特点,使得数据展示更加灵活且直观。这种控件通常用于显示层次结构的数据,如文件系统、数据库记录或者组织结构等。在...
总之,这个自定义控件db Check TreeList是一个增强版的树形列表控件,它在每个节点上增加了复选框功能,适用于需要多选操作的场景。开发者可以通过研究源代码和类图来学习如何自定义DevExpress的控件,以满足特定的...
TreeList View 控件是.NET开发中常用的一种控件,它以树形结构显示数据,同时提供了类似表格的功能,如编辑和排序。这个源码包针对C#和VB.NET两种编程语言,提供了实现TreeList View控件功能的代码,使得开发者能够...
TreeList是一种控件,它将表格和树形视图的优点结合在一起,可以显示具有层级关系的数据,并且每个节点都可以拥有子节点,形成一个可展开/折叠的树状结构。在`Dev`环境中,TreeList提供了丰富的功能,如排序、分页、...
这种控件以其直观的树形结构,使得用户能够轻松地浏览和操作大量数据,提高了用户体验。在ASP.NET环境中,Web TreeList控件是一个常用的服务器控件,它提供了丰富的功能和高度的自定义能力。 首先,我们要理解Web ...
DevTreeList 控件是 DevExpress 提供的一种高级树形列表控件,它可以用来展示具有层级关系的数据,并支持多种交互操作,如折叠、展开节点等。本文档主要介绍了如何使用 DevTreeList 控件来创建和管理一个具有多级...
为了实现多级树形列表,我们需要构建一个能够递归处理节点关系的自定义控件。在提供的代码中,可以看到`MainActivity`类中初始化了一个名为`treeLv`的ListView,并且创建了一个自定义的适配器`MyTreeListViewAdapter...