コード例 #1
0
ファイル: NodeOperations.cs プロジェクト: huamanhtuyen/VNACCS
        /// <summary>
        /// Returns last rendered node on screen.
        /// </summary>
        /// <param name="tree">Tree control.</param>
        /// <returns>Last rendered node or null</returns>
        public static Node GetLastDisplayedNode(AdvTree tree)
        {
            Rectangle r = tree.NodeLayout.ClientArea;
            Node node = tree.SelectedNode;
            if (node == null) node = GetFirstVisibleNode(tree);
            Point scrollPos = Point.Empty;
            if (tree.AutoScroll)
                scrollPos = tree.GetAutoScrollPositionOffset();

            // Find last fully rendered node
            Node lastNode = null;
            if (r.IntersectsWith(node.Bounds))
                lastNode = node;
            while (node != null)
            {
                node = NodeOperations.GetNextVisibleNode(node);
                if (node != null && node.Selectable)
                {
                    Rectangle nodeRect = NodeDisplay.GetNodeRectangle(eNodeRectanglePart.NodeContentBounds, node, scrollPos);
                    if (nodeRect.Bottom > r.Bottom)
                        break;
                    else if (r.IntersectsWith(nodeRect))
                        lastNode = node;
                }
            }

            return lastNode;
        }
コード例 #2
0
ファイル: NodeOperations.cs プロジェクト: huamanhtuyen/VNACCS
        /// <summary>
        /// Returns first rendered node on screen.
        /// </summary>
        /// <param name="tree">Tree control.</param>
        /// <returns>Last rendered node or null</returns>
        public static Node GetFirstDisplayedNode(AdvTree tree)
        {
            Rectangle r = tree.GetInnerRectangle();
            r.Y += tree.ColumnHeaderHeight;
            r.Height -= tree.ColumnHeaderHeight;

            Node node = tree.SelectedNode;
            if (node == null) node = GetFirstVisibleNode(tree);
            Point scrollPos = Point.Empty;
            if (tree.AutoScroll)
                scrollPos = tree.GetAutoScrollPositionOffset();
            // Find last fully rendered node
            Node lastNode = null;
            if (r.IntersectsWith(node.Bounds))
                lastNode = node;
            while (node != null)
            {
                node = NodeOperations.GetPreviousVisibleNode(node);
                if (node != null && node.Selectable)
                {
                    Rectangle nodeRect = NodeDisplay.GetNodeRectangle(eNodeRectanglePart.NodeContentBounds, node, scrollPos);
                    if (r.IntersectsWith(nodeRect))
                        lastNode = node;
                    else if (nodeRect.Y < r.Y)
                        break;
                }
            }

            return lastNode;
        }