(一)c#Winform自定义控件-基类控件

前提入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control如果觉得写的还行,请点个star支持一下吧准备工作自定义的分为控件和窗体2种类型,分别都有一个基类,基类实现公共的大部分工作开始首先从基类控件开始吧,主要实现功能:圆角边框填充颜色添加一个用户控件,命名为...

(一)c#Winform自定义控件-基类控件

前提

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

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

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

准备工作

自定义的分为控件和窗体2种类型,分别都有一个基类,基类实现公共的大部分工作

开始

首先从基类控件开始吧,

主要实现功能:

  1. 圆角
  2. 边框
  3. 填充颜色

添加一个用户控件,命名为UCControlBase,写入相关属性,包含圆角角度,边框颜色,边框宽度,填充颜色,背景色等

  1  private bool _isRadius = false;  2   3private int _cornerRadius = 24;  4   5   6private bool _isShowRect = false;  7   8private Color _rectColor = Color.FromArgb(220, 220, 220);  9  10private int _rectWidth = 1; 11  12private Color _fillColor = Color.Transparent; 13/// <summary> 14/// 是否圆角 15/// </summary> 16[Description("是否圆角"), Category("自定义")] 17public bool IsRadius 18   { 19 get 20 { 21  return this._isRadius; 22 } 23 set 24 { 25  this._isRadius = value; 26 } 27   } 28//圆角角度 29[Description("圆角角度"), Category("自定义")] 30public int ConerRadius 31   { 32 get 33 { 34  return this._cornerRadius; 35 } 36 set 37 { 38  this._cornerRadius = value; 39 } 40   } 41  42/// <summary> 43/// 是否显示边框 44/// </summary> 45[Description("是否显示边框"), Category("自定义")] 46public bool IsShowRect 47   { 48 get 49 { 50  return this._isShowRect; 51 } 52 set 53 { 54  this._isShowRect = value; 55 } 56   } 57/// <summary> 58/// 边框颜色 59/// </summary> 60[Description("边框颜色"), Category("自定义")] 61public Color RectColor 62   { 63 get 64 { 65  return this._rectColor; 66 } 67 set 68 { 69  this._rectColor = value; 70  this.Refresh(); 71 } 72   } 73/// <summary> 74/// 边框宽度 75/// </summary> 76[Description("边框宽度"), Category("自定义")] 77public int RectWidth 78   { 79 get 80 { 81  return this._rectWidth; 82 } 83 set 84 { 85  this._rectWidth = value; 86 } 87   } 88/// <summary> 89/// 当使用边框时填充颜色,当值为背景色或透明色或空值则不填充 90/// </summary> 91[Description("当使用边框时填充颜色,当值为背景色或透明色或空值则不填充"), Category("自定义")] 92public Color FillColor 93   { 94 get 95 { 96  return this._fillColor; 97 } 98 set 99 {100  this._fillColor = value;101 }102}

需要做的就是重写OnPaint,来画边框以及填充颜色

 1 protected override void OnPaint(PaintEventArgs e) 2   { 3 if (this.Visible) 4 { 5  if (this._isRadius) 6  { 7this.SetWindowRegion(); 8  } 9  if (this._isShowRect)10  {11 
源文地址:https://www.guoxiongfei.cn/cntech/24525.html
0