【发布时间】:2012-10-04 21:10:58
【问题描述】:
我需要更改选定节点的背景颜色,当节点被选中并有焦点时 - 背景颜色变为绿色,当被选中但没有焦点时 - 红色。我无法区分关注树视图和不关注树视图的选定节点。位于 TabPage 对象中的树视图。
//...
this.myTreeView.HideSelection = false;
//...
private void myTreeView_drawNode(object sender, DrawTreeNodeEventArgs e)
{
Color backColorSelected = System.Drawing.Color.Green;
Color backColor = System.Drawing.Color.Red;
// node selected and has focus
if (((e.State & TreeNodeStates.Selected) != 0)
&& (this.myTabControl.Focused)) // this doesn't work, node is always red
{
using (SolidBrush brush = new SolidBrush(backColorSelected))
{
e.Graphics.FillRectangle(brush, e.Bounds);
}
}
// node selected but doesn't have focus
else if ((e.State & TreeNodeStates.Selected) != 0)
{
using (SolidBrush brush = new SolidBrush(backColor))
{
e.Graphics.FillRectangle(brush, e.Bounds);
}
}
// not selected at all
else
{
e.Graphics.FillRectangle(Brushes.White, e.Bounds);
}
e.Graphics.DrawRectangle(SystemPens.Control, e.Bounds);
TextRenderer.DrawText(e.Graphics,
e.Node.Text,
e.Node.TreeView.Font,
e.Node.Bounds,
e.Node.ForeColor);
}
【问题讨论】:
-
用
myTreeView.Focused代替this.myTabControl.Focused怎么样? -
@aliassce,这也行不通
-
只是想让您知道您的代码非常适合我需要做的事情。感谢您发布它。
-
您要确保控件上的 DrawMode 也设置为 OwnerDrawAll。