0
我想要更改TreeView控件中節點的背景顏色,以便當用戶選擇一個節點時,背景顏色會從選定的選定節點更改爲TreeView中最頂層的父節點。c#在TreeView中更改SelectNode的背景
這裏是我所追求的視覺例如:
我想要更改TreeView控件中節點的背景顏色,以便當用戶選擇一個節點時,背景顏色會從選定的選定節點更改爲TreeView中最頂層的父節點。c#在TreeView中更改SelectNode的背景
這裏是我所追求的視覺例如:
按照您的圖像,我會假設你正在使用Windows窗體。所以,這是你需要實現有這個樣本中的樹狀視圖稱爲爲TreeView1形式所需的功能代碼:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private readonly Color selectedColor = Color.Red;
private readonly Color normalColor = Color.Transparent;
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.ByKeyboard &&
e.Action != TreeViewAction.ByMouse)
return;
ResetAllNodes(treeView1.Nodes.Cast<TreeNode>());
ChangeBackground(e.Node);
}
private void ResetAllNodes(IEnumerable<TreeNode> nodes)
{
var treeNodes = nodes as TreeNode[] ?? nodes.ToArray();
if (!treeNodes.Any())
return;
foreach (var node in treeNodes)
{
node.BackColor = normalColor;
ResetAllNodes(node.Nodes.Cast<TreeNode>());
}
}
private void ChangeBackground(TreeNode node)
{
node.BackColor = selectedColor;
if (node.Parent == null)
return;
ChangeBackground(node.Parent);
}
}
希望這有助於!