public void SetNodePainter(TreeNode node, Color backColor, Color foreColor) { if (view.IsNull()) { return; } if (view.Painter.ContainsKey(node)) { view.Painter[node].BackColor = backColor; view.Painter[node].ForeColor = foreColor; } else { view.Painter.TryAdd(node, new UITreeNodePainter() { BackColor = backColor, ForeColor = foreColor }); } view.Invalidate(); }
public void EnsureVisible() { TreeViewEx.NodeEnumeratorEx nodes; int nodeFromTop; int nodeNo; while (true) { // Find "this" node number and position from the top control. nodeFromTop = -1; nodeNo = 0; bool nodeFound = false; nodes = new TreeViewEx.NodeEnumeratorEx(treeView.nodes); while (nodes.MoveNext()) { if (nodes.currentNode == treeView.topNode) { // We are at the top of the control. nodeFromTop = 0; } if (nodes.currentNode == this) { if (nodeFromTop < 0) { treeView.topNode = this; treeView.Invalidate(); return; } nodeFound = true; break; } if (nodeFromTop >= 0) { nodeFromTop++; } nodeNo++; } if (nodeFound) { break; } else { // Make sure all parents are expanded and see if its now visible. TreeNodeEx node = this; TreeNodeEx highestNode = node; for (; node != null; node = node.Parent) { node.expanded = true; highestNode = node; } treeView.InvalidateDown(highestNode); } } int visibleNodes = treeView.VisibleCountActual; // See if its already visible. if (nodeFromTop < visibleNodes) { return; } // Set the top node no we want to make this node 1 up from the bottom. nodeFromTop = nodeNo - visibleNodes + 1; if (nodeFromTop < 0) { nodeFromTop = 0; } // Find the node corresponding to this node no. nodes.Reset(); nodeNo = 0; while (nodes.MoveNext()) { if (nodeFromTop == nodeNo) { treeView.topNode = nodes.currentNode; treeView.Invalidate(); break; } nodeNo++; } }