WinForm绘制工具树JcsToolBox

一.设计时效果:

二.运行时效果:

三.简单谈谈设计思路:

与以往不同的是,它的主体是一个完全绘制出来的控件,不象我前面写的工具树容器,是在一个容器中通过设置控件的相对位置来达到效果.首先建立基础元素类,元素类(继承自基础元素类),元素集合类,分组元素类(继承自基础元素类),分组元素集合类.最后来实现工具树.通过重写OnPaint,OnResize,OnMouseDown,OnMouseLeave,OnMouseMove等方法来对不同时期进行绘制.

如果哪位朋友对源程序感兴趣,可以MAIL给我. 

heqiumie@tom.com

 

四.部分源代码: 

 

  public   delegate   void  ItemChangedEventHandler(Object sender, EventArgs e);
        
public   event  ItemChangedEventHandler ItemChanged;
        
public   event  EventHandler ItemClick;
        
public   event  EventHandler ItemDoubleClick;

        
private  VScrollBar vScrollBar1;  // 滚动条
         private  JcsToolBoxCategoryCollection _categories  =   new  JcsToolBoxCategoryCollection();
        
private  Int32 _itemHeight  =   18 // item的高
         private  Int32 _categoryHeight  =   16 ; // 分类项的高
         private  Int32 _itemSpace  =   2 ; // item间隔
         private   const  Int32 _categoryLeft  =   6 ; // 文字左侧间隔
         private   const  Int32 _itemleft  =   6 ;

        
private  JcsToolBoxItem _mouseHoverItem  =   null // 鼠标移动到上面的ITEM
         private  JcsToolBoxItem _selectedItem  =   null ; // 选择的ITEM
         private  JcsToolBoxCategory _selectedCateGory  =   null ; // 选择的分组项
         private  Color _borderColor  =  Color.Black; // 边框的颜色
         private  Color _categoryForeColor  =  Color.Black; // 分组项的前景色
         private  Color _categoryBackColor  =  Color.White; // 分组项的背景色
         private  Color _itemBackColor  =  SystemColors.Control; // item的背景色
         private  Color _itemForeColor  =  SystemColors.WindowText; // item的前景色
         private  Color _itemSelectedColor  =  Color.LightSkyBlue ; // 选定项的颜色
         private  Color _itemMoveOverColor  =  Color.LightBlue; // 移动到item其上的颜色
         private  Color _categorySelectedColor  =  Color.White; // 选择分组项的颜色
         private  ImageList _imagelist;

        
private  ControlBorderStyle _borderstyle  =  ControlBorderStyle.SingleLine;
        
private  CateGoryBackType _categoryBackType  =  CateGoryBackType.Normal;
        
private  CateGoryColorStyle _categoryColorStyle  =  CateGoryColorStyle.经典风格;

        
public   enum  ControlBorderStyle
        
{
            SingleLine,
            Border3D,
            None
        }

        
public   enum  CateGoryBackType
        
{
            Normal,
            GradualChange
        }


        
public   enum  CateGoryColorStyle
        
{
            经典风格,
            复古风格,
            蓝色忧郁,
            粉色情怀,
            青青芳草
        }

        
public  JcsToolBox()
        
{
            InitializeComponent();
            
this.BorderStyle = BorderStyle.None;

            vScrollBar1 
= new VScrollBar();
            vScrollBar1.Dock 
= DockStyle.Right;
            
this.Controls.Add(vScrollBar1);
            
this.vScrollBar1.Scroll +=new ScrollEventHandler(vScrollBar1_Scroll);

            SetStyle(ControlStyles.AllPaintingInWmPaint, 
true);
            SetStyle(ControlStyles.DoubleBuffer, 
true);
            SetStyle(ControlStyles.UserPaint, 
true);
            SetStyle(ControlStyles.ResizeRedraw, 
true);
            RefreshScrollBar();
            
this._categories.ItemChanged += new CollectionChangeEventHandler(OnCategoryCollectionChanged);
            
this.ItemChanged += new ItemChangedEventHandler(OnItemChanged);
        }



        
"属性"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值