2016-08-14 15 views
1

私はこのTreeViewMSの実装を使用しているため、ユーザーは複数選択機能を持つことができますが、 プロパティを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; 
    } 
} 

この方法では、背景色とツリービューのデフォルトの前景色をリセットします。

このメソッドを削除すると、別のノードをクリックしたときにノードのフォアカラーが保持されますが、ノードが選択されると、選択されたノードにデフォルトのフォアカラーが使用されます。

​​

そして、この:

それを修正するには、これを行うことにより、ノードのテキストを自分で描くことができます

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); 
} 
関連する問題