問題出在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);
}
是HideSelection真的嗎? – TaW