コード例 #1
0
ファイル: UITreeView.cs プロジェクト: jianyuyanyu/SunnyUI
        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();
        }
コード例 #2
0
ファイル: TreeNodeEx.cs プロジェクト: prepare/box2c
		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++;
			}
		}