【发布时间】:2017-05-16 15:43:42
【问题描述】:
我有一个这样的 TreeView:
System.Windows.Forms.TreeView treeView;
this.treeView = new System.Windows.Forms.TreeView();
treeView.Update();
treeNode = this.treeView.Nodes.Add(yadda1);
treeNode = this.treeView.Nodes.Add(yadda2);
treeNode = this.treeView.Nodes.Add(yadda3);
foreach (TreeNode node in treeView.Nodes)
{
namedNode = getTreeNodeFromName(documentType, node);
if (namedNode != null)
{
break; // found it
}
}
treeView.SelectedNode = namedNode;
treeView.SelectedNode.BackColor = Color.Blue;
treeView.Focus();
this.treeView.EndUpdate();
这段代码几乎可以工作。默认情况下,所选节点由背景颜色指示为非常浅的灰色,很难看到。所以我以编程方式将其设置为蓝色,但在用户单击另一个节点之前,背景不会变为蓝色。
之前的问题建议致电treeView.Focus(),但这没有区别。
如何让背景颜色立即变为蓝色?
【问题讨论】:
-
您正在尝试更改系统的突出显示颜色。为此,您必须自己绘制节点。请参阅 DrawMode 属性和 DrawNode 事件。
-
LarsTech 是正确的,如果您想这样做,您必须回答 DrawNode 事件。这实际上相当简单。这应该让你开始。 msdn.microsoft.com/en-us/library/…
-
有些液晶显示器无法很好地显示像这样的不饱和颜色。不是我的,我怀疑我会非常感谢一个覆盖它的程序。鉴于这会影响您机器上的每个程序,合理的解决方案是更改系统颜色。
-
@HansPassant:我认为在我的应用程序中更改 TreeView 的颜色只会影响我的应用程序,而不是我机器上的每个程序。对吗?