我在重绘treeview仿微软点击击,选中时效果时,有个问题解决不了,就是在点击时,有个背景色默认蓝色,怎样去除?请参考下图:

解决方案 »

  1.   

    DrawNode事件中对接点绘制底色为treeview的背景色
      

  2.   

    把源码附上,参考看哪里需要改动?
      public TreeViewW(IContainer container)
            {
                container.Add(this);            InitializeComponent();
                this.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawText;
                this.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode);
            }        private Color _rowBackColor1 = Color.White;//颜色1
            private Color _rowBackColor2 = Color.White;//颜色2
            private Color _selectedColor;        private Color _selectedColor1 = Color.Khaki;
            private Color _selectedColor2 = Color.Gold;
            private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
            {
                TreeNode treeNode = e.Node;
                if (treeNode.IsSelected)
                {                RenderBackgroundInternal(
                    e.Graphics,
                    new Rectangle(e.Bounds.Location,
                                  new Size(this.Width - e.Bounds.X - 10, e.Bounds.Height)),
                    _selectedColor1,
                    _selectedColor2,
                    Color.FromArgb(200, 255, 255, 255),
                    0.45f,
                    true,
                    LinearGradientMode.Vertical);            }            e.Graphics.DrawString(e.Node.Text, this.Font, new SolidBrush(Color.Black), e.Bounds);
                //this.Invalidate();
            }
      

  3.   

    不是属性,是treeview的drawnode事件,看msdn
      

  4.   

    重新循环下,把节点的背景颜色设为空 Color.Empty
      

  5.   


       private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
            {
                TreeNode treeNode = e.Node;
                if (treeNode.IsSelected)
                {                RenderBackgroundInternal(
                    e.Graphics,
                    new Rectangle(e.Bounds.Location,
                                  new Size(this.Width - e.Bounds.X - 10, e.Bounds.Height)),
                    _selectedColor1,
                    _selectedColor2,
                    Color.FromArgb(200, 255, 255, 255),
                    0.45f,
                    true,
                    LinearGradientMode.Vertical);            }
                else if (e.State==TreeNodeStates.Focused)
                {
                    RenderBackgroundInternal(
                    e.Graphics,
                    e.Bounds,
                    _focusedColor1,
                    _selectedColor2,
                    Color.FromArgb(200, 255, 255, 255),
                    0.45f,
                    true,
                    LinearGradientMode.Vertical);
                }            e.Graphics.DrawString(e.Node.Text, this.Font, new SolidBrush(Color.Black), e.Bounds);