(四十一)c#Winform自定义控件-进度条

前提入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control如果觉得写的还行,请点个star支持一下吧欢迎前来交流探讨:企鹅群568015492NuGetInstall-PackageHZH_Controls目录https://www.cnblogs.com/bf...

(四十一)c#Winform自定义控件-进度条

前提

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。

开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control

如果觉得写的还行,请点个 star 支持一下吧

欢迎前来交流探讨: 企鹅群568015492企鹅群568015492

NuGet

Install-Package HZH_Controls

目录

https://www.cnblogs.com/bfyx/p/11364884.html

准备工作

前面写过一个进度条,但是并不是太好,这次用GDI 再重绘一个,不了解GDI 的自行百度了解下先

(七)c#Winform自定义控件-进度条

开始

添加一个类,命名UCProcessLine,继承Control

添加一个枚举,用以如何显示值

 1  public enum ValueTextType 2  { 3   None, 4/// <summary> 5/// 百分比 6/// </summary> 7   Percent, 8/// <summary> 9/// 数值10/// </summary>11   Absolute12  }

添加一些属性

  1 [Description("值变更事件"), Category("自定义")]  2public event EventHandler ValueChanged;  3int m_value = 0;  4[Description("当前属性"), Category("自定义")]  5public int Value  6   {  7 set  8 {  9  if (value > m_maxValue) 10m_value = m_maxValue; 11  else if (value < 0) 12m_value = 0; 13  else 14m_value = value; 15  if (ValueChanged != null) 16ValueChanged(this, null); 17  Refresh(); 18 } 19 get 20 { 21  return m_value; 22 } 23   } 24  25private int m_maxValue = 100; 26  27[Description("最大值"), Category("自定义")] 28public int MaxValue 29   { 30 get { return m_maxValue; } 31 set 32 { 33  if (value < m_value) 34m_maxValue = m_value; 35  else 36m_maxValue = value; 37  Refresh(); 38 } 39   } 40  41Color m_valueColor = Color.FromArgb(73, 119, 232); 42  43[Description("值进度条颜色"), Category("自定义")] 44public Color ValueColor 45   { 46 get { return m_valueColor; } 47 set 48 { 49  m_valueColor = value; 50  Refresh(); 51 } 52   } 53  54private Color m_valueBGColor = Color.White; 55  56[Description("值背景色"), Category("自定义")] 57public Color ValueBGColor 58   { 59 get { return m_valueBGColor; } 60 set 61 { 62  m_valueBGColor = value; 63  Refresh(); 64 } 65   } 66  67private Color m_borderColor = Color.FromArgb(192, 192, 192); 68  69[Description("边框颜色"), Category("自定义")] 70public Color BorderColor 71   { 72 get { return m_borderColor; } 73 set 74 { 75  m_borderColor = value; 76  Refresh(); 77 } 78   } 79  80[Description("值字体"), Category("自定义")] 81public override Font Font 82   { 83 get 84 { 85  return base.Font; 86 } 87 set 88 { 89  base.Font = value; 90  Refresh(); 91 } 92   } 93  94[Description("值字体颜色"), Category("自定义")] 95public override System.Drawing.Color ForeColor 96   { 97 get 98 
源文地址:https://www.guoxiongfei.cn/cntech/24901.html