首页 > 代码库 > [DevExpress]获取可见子节点集合

[DevExpress]获取可见子节点集合

关键代码:

        /// <summary>        /// 向下递归TreeListNode节点        /// </summary>        /// <param name="node">需要向下递归的节点</param>        /// <param name="conditionHanlder">委托</param>        public static void DownRecursiveNode(this TreeListNode node, Action<TreeListNode> conditionHanlder)        {            foreach (TreeListNode _childNode in node.Nodes)            {                conditionHanlder(_childNode);                DownRecursiveNode(_childNode, conditionHanlder);            }        }
        /// <summary>        /// 获取节点下可见子节点集合        /// </summary>        /// <param name="node">需要获取可见子节点的节点</param>        /// <param name="conditonHanlder">条件委托</param>        /// <returns>可见子节点集合</returns>        public static List<TreeListNode> GetVisibleChildNodes(this TreeListNode node, Predicate<TreeListNode> conditonHanlder)        {            List<TreeListNode> _visibleChildNodes = new List<TreeListNode>();            DownRecursiveNode(node, n =>            {                if (n.Visible)                {                    if (conditonHanlder(n))                    {                        _visibleChildNodes.Add(n);                    }                }            });            return _visibleChildNodes;        }        /// <summary>        /// 获取节点下可见子节点集合        /// </summary>        /// <param name="node">需要获取可见子节点的节点</param>        /// <returns>可见子节点集合</returns>        public static List<TreeListNode> GetVisibleChildNodes(this TreeListNode node)        {            return GetVisibleChildNodes(node, n => 1 == 1);        }
<style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }</style>

说明:

代码逻辑很简单,就是递归遍历子节点,当节点属性是可见的时候,则添加到返回集合里面,不知道各位有好的方法没?希望有所帮助!