4
当选中节点并且具有焦点时,我需要更改选定节点的背面颜色 - 背景颜色在选中时变绿,但没有焦点时变为红色。我无法区分所选节点和专注于树视图而没有。位于TabPage对象中的树视图。如何使用TreeViewDrawMode.OwnerDrawAll更改TreeView中选定节点的背景颜色?
//...
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
@aliassce,那也行不通 –
只是想让你知道,你的代码完美地为我需要做的事情工作。感谢您发布它。 – raddevus