先看效果图:
非常简洁的一个进度条。
完整项目源码下载:http://files.cnblogs.com/files/tuzhiyuan/%E8%BF%9B%E5%BA%A6%E6%9D%A1%E6%8E%A7%E4%BB%B6%E8%87%AA%E5%AE%9A%E4%B9%891.rar
下面是代码:
1 int _now = 1; 2 Color hatchColor; 3 public MYProgressBar() 4 { 5 InitializeComponent(); 6 } 7 //设置当前进度位置 8 [Description("设置当前进度所在位置")] //显示在属性设计视图中的描述 9 [DefaultValue(typeof(Int32), "0")]//给予初始值 10 public int Value 11 { 12 13 get 14 { 15 return _now; 16 } 17 set 18 { 19 if (value > 100) 20 { 21 _now = 100; 22 SetJinDu(100); 23 } 24 else if (value < 0) 25 { 26 _now = 0; 27 SetJinDu(0); 28 } 29 else 30 { 31 _now = value; 32 SetJinDu(value); 33 } 34 } 35 } 36 [Description("设置进度条进度颜色")] //显示在属性设计视图中的描述 37 [DefaultValue(typeof(Color), "Control")]//给予初始值 38 public Color BarColor 39 { 40 get { return hatchColor; } 41 set 42 { 43 hatchColor = value; 44 panel1.BackColor = value; 45 } 46 } 47 private void MYProgressBar_Load(object sender, EventArgs e) 48 { 49 50 } 51 public void SetJinDu(int number) 52 { 53 54 //获取控件宽度 55 float db_this_width = this.Width; 56 57 58 //进度值除以100得到进度条宽度相对的百分比 59 float bfz = (float)number / 100; 60 61 62 //控件宽度乘以百分比得到进度条Panel的相对宽度 63 panel1.Width = Convert.ToInt32((float)db_this_width * bfz); 64 65 } 66 67 //控件发生大小改变事件 68 private void MYProgressBar_Resize(object sender, EventArgs e) 69 { 70 panel1.Height = this.Height; 71 SetJinDu(Value); 72 }
如何使用,在winform工具栏右键选择项>浏览,选择自定义控件dll文件,即可在工具栏看到,拖动使用。
还是那句老话,没有完善,需要用还需继续完善。