C# WinForm TreeView改變選中節點顏色,失去焦點時選中節點仍突顯。


當用戶焦點離開TreeView時,TreeView選中節點仍然高亮,但是顏色太淺,幾乎看不出來。
這里重寫一下DrawMode();可以控制選中節點顏色。
TreeView.HideSelection = False;可讓選中節點保持高亮。
參考:
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.treeview.hideselection(VS.80).aspx
public FrmMain()
{
    InitializeComponent();
    treeView1 .HideSelection = False;
     // 自已繪制
     this.treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
     this.treeView1.DrawNode +=  new DrawTreeNodeEventHandler(treeView1_DrawNode);
}

// 在繪制節點事件中,按自已想的繪制
private  void treeView1_DrawNode( object sender, DrawTreeNodeEventArgs e)
{
    e.DrawDefault =  true// 我這里用默認顏色即可,只需要在TreeView失去焦點時選中節點仍然突顯
     return;

     if ((e.State & TreeNodeStates.Selected) !=  0)
    {
         // 演示為綠底白字
        e.Graphics.FillRectangle(Brushes.DarkBlue, e.Node.Bounds);

        Font nodeFont = e.Node.NodeFont;
         if (nodeFont ==  null) nodeFont = ((TreeView)sender).Font;
        e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White,Rectangle.Inflate(e.Bounds,  20));
    }
     else
    {
        e.DrawDefault =  true;
    }

     if ((e.State & TreeNodeStates.Focused) !=  0)
    {
         using (Pen focusPen =  new Pen(Color.Black))
        {
            focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
            Rectangle focusBounds = e.Node.Bounds;
            focusBounds.Size =  new Size(focusBounds.Width -  1,
            focusBounds.Height -  1);
            e.Graphics.DrawRectangle(focusPen, focusBounds);
        }
    }

}
url: http://greatverve.cnblogs.com/archive/2012/03/21/treeview-HideSelection.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM