如果只是想实现节点选中的话,TreeList其实是由一个参数,可以控制父节点选中时,其子节点也一并选中的。
这里是针对TreeList的其他列值,因此用到了递归。
效果图:
/// <summary> /// 递归树 /// </summary> /// <param name="parentNode">父节点:即焦点节点</param> /// <param name="val">父节点的值</param> /// <param name="colID">列值</param> private void GetChildNodes(TreeListNode parentNode, bool val, TreeListColumn colID) { if (parentNode.Nodes.Count > 0) { foreach (TreeListNode node in parentNode.Nodes) { if (node.Nodes.Count > 0) { GetChildNodes(node, val, colID); node.SetValue(colID, val); } else { node.SetValue(colID, val); } } } }我是在CellValueChanged的时候调用的,这有个弊端就是不是点中就触发,还需要回车才可以触发:
private void PerTree_CellValueChanged(object sender, DevExpress.XtraTreeList.CellValueChangedEventArgs e) { GetChildNodes(PerTree.FocusedNode, bool.Parse(PerTree.FocusedNode.GetValue(e.Column).ToString()), e.Column); }