正如評論說,你需要將DrawMode
屬性更改爲OwnerDrawText
再有這樣的事情在DrawNode
事件:
private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
Brush foreColour;
Brush backColour;
if (e.Node.IsSelected)
{
if (e.Node.Text == "Node1")
{
// Special highlight colouring
foreColour = Brushes.Yellow;
backColour = Brushes.Red;
}
else
{
// Default highlight colouring
foreColour = SystemBrushes.HighlightText;
backColour = SystemBrushes.Highlight;
}
}
else {
if (e.Node.Text == "Node1")
{
// Special colouring
foreColour = Brushes.Red;
backColour = Brushes.Yellow;
}
else
{
// Default colouring
foreColour = SystemBrushes.WindowText;
backColour = SystemBrushes.Window;
}
}
e.Graphics.FillRectangle(backColour, e.Bounds);
e.Graphics.DrawString(e.Node.Text, treeView1.Font, foreColour, e.Bounds);
}
(我不知道你想用什麼樣的標準,因此我添加了e.Node.Text == "Node1"
作爲示例。)
注意:如果treeview失去焦點,您可能需要添加其他(但類似)邏輯來淡化顏色。
是的,你必須使用DrawNode方法。將DrawMode屬性設置爲OwnerDrawText。 – LarsTech
是的,你需要編寫'DrawNode'事件。在那裏你可以檢查'e.State.HasFlag(TreeNodeStates.Selected)' – TaW