/// <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(TreeGX tree) { Rectangle r = tree.ClientRectangle; 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.Contains(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 (r.Contains(nodeRect)) lastNode = node; else if (nodeRect.Y > r.Bottom) break; } } return lastNode; }