[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>();

            TreeList _tree = node.TreeList;

            DownRecursiveNode(node, n =>

            {

                RowInfo _rowInfo = _tree.ViewInfo.RowsInfo[n];

                if (_rowInfo != null)

                {

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

        }

希望有所帮助!

你可能感兴趣的:(DevExpress)