2010-11-11 67 views
3

我有一個樹形圖,當用戶與單個節點交互時,顏色會改變。代碼是:使用C設置TreeView ForeColor#

treeview.selectednode.forecolor = color.red; 

當用戶按下一個按鈕時,我希望整個節點組例如變爲黑色。所以我編碼如下:

treeview.forecolor = color.black; 

它工作正常,除了我以前已更改爲紅色的節點。有沒有辦法解決這個問題?

+0

這是否真的編譯?該屬性的名稱是* [ForeColor](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.forecolor.aspx)*,而不是* forecolor *。此外,它應該是* [Color.Black](http://msdn.microsoft.com/en-us/library/system.drawing.color.black.aspx)*,而不是* color.black *。 – 2013-09-30 13:24:15

回答

2

使用該遞歸函數:

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
    (sender as TreeView).SelectedNode.ForeColor = Color.Red; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    foreach (TreeNode tn in treeView1.Nodes) 
    { 
     tn.ForeColor = Color.Blue; 
     ColorNodes(tn); 
    } 
} 

private void ColorNodes(TreeNode t) 
{ 
    foreach (TreeNode tn in t.Nodes) 
    { 
     tn.ForeColor = Color.Blue; 
     ColorNodes(tn); 
    } 
} 
+0

謝謝 - 沒想到,但如果我有一個有幾百或幾千個節點的Treeview,這個規模有多高效?再次感謝。 – 2010-11-11 15:31:44

+0

最受歡迎的,它的每個節點處理一次,所以它的效率非常高。 – Genius 2010-11-11 15:33:35

+0

我想我會這樣做,但是是異步的。 – 2010-11-11 16:00:26

0

保持之前選擇的節點的引用,把它變成黑色的,只要更改樹狀黑色。

+0

Can這樣做.....有些情況下,樹視圖加載了紅色節點。不管怎麼說,還是要謝謝你。 – 2010-11-11 15:59:54