2016-08-14 42 views
1

我正在使用此TreeViewMS實現,以便用戶可以擁有多選功能,但是我發現今天有些東西無法正常工作。如果我將TreeNode.ForeColor屬性設置爲Color.Red,並將焦點放在該節點上,則在我將鼠標移出該節點後,其顏色會恢復爲默認顏色(黑色)。我該如何解決這個問題? 我一直在尋找一個事件來設置TreeNode.ForeColor我的自定義一個節點失去焦點,如果該節點符合需要改變其顏色。有這樣的事件嗎?定製Node.ForeColor在失去焦點時重置

+0

是HideSelection真的嗎? – TaW

回答

1

問題出在TreeViewMS類。看看removePaintFromNodes方法:

protected void removePaintFromNodes() 
{ 
    if (m_coll.Count==0) return; 

    TreeNode n0 = (TreeNode) m_coll[0]; 
    Color back = n0.TreeView.BackColor; 
    Color fore = n0.TreeView.ForeColor; 

    foreach (TreeNode n in m_coll) 
    { 
     n.BackColor = back; 
     n.ForeColor = fore; 
    } 
} 

此方法重置背景色和前景色到TreeView默認。

如果刪除此方法,當您單擊另一個節點時,它將保留該節點的前景色,但是當選擇該節點時,它將使用所選節點的默認前景色。

爲了解決這個問題,你可以這樣做得出自己的節點文本:

​​

這:

private void TreeViewMS1_DrawNode(object sender, DrawTreeNodeEventArgs e) 
{ 
    TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.NodeFont, e.Bounds, e.Node.ForeColor, TextFormatFlags.GlyphOverhangPadding); 
}