C#自定义Button按钮控件

时间:2023-03-08 22:04:27

C#自定义Button按钮控件

  在实际项目开发中经常可以遇到.net自带控件并不一定可以满足需要,因此需要自定义开发一些新的控件,自定义控件的办法也有多种,可以自己绘制线条颜色图形等进行重绘,也可以采用已有的控件作为控件的一个组成部分从而组成新的控件,本例中使用后者这里做了一个简单的按钮控件,特意帖上来,如有不足之处请见谅!

按钮素材:

这里的小图标是从V2013标题栏截取的

C#自定义Button按钮控件

截图图标如下,有需要的可以自行:images下载

C#自定义Button按钮控件

Button按钮控件设计

1.添加一个用户自定义控件ButtonEX

按钮组成:lable标签一个,Dock设置为填充

C#自定义Button按钮控件

2.添加控件属性

  /// <summary>
/// 控件的默认图片
/// </summary>
private Image _imageDefault = null; [Description("控件的默认图片")]
public Image ImageDefault
{
get { return _imageDefault; }
set
{
_imageDefault = value;
label.Image = _imageDefault;
}
}
/// <summary>
/// 光标移动到控件上方显示的图片
/// </summary>
private Image _imageMove = null;
[Description("光标移动到控件上方显示的图片")]
public Image ImageMove
{
get { return _imageMove; }
set { _imageMove = value; }
}
/// <summary>
/// 光标离开控件显示的图片
/// </summary>
private Image _imageLeave = null;
[Description("光标离开控件显示的图片")]
public Image ImageLeave
{
get { return _imageLeave; }
set { _imageLeave = value; }
}
/// <summary>
/// 控件的背景色
/// </summary>
private Color _backColorEX = Color.Transparent; [Description("控件的背景色")]
public Color BackColorEX
{
get { return _backColorEX; }
set
{
_backColorEX = value;
label.BackColor = _backColorEX;
}
} /// <summary>
/// 鼠标移动到控件上方显示的颜色
/// </summary>
private Color backColorMove = Color.Transparent;
[Description("鼠标移动到控件上方显示的颜色")]
public Color BackColorMove
{
get { return backColorMove; }
set { backColorMove = value; }
}
/// <summary>
/// 鼠标离开控件显示的背景色
/// </summary>
private Color backColorLeave = Color.Transparent;
[Description("鼠标离开控件显示的背景色")]
public Color BackColorLeave
{
get { return backColorLeave; }
set { backColorLeave = value; }
}
/// <summary>
/// 控件的文字显示
/// </summary>
private string textEX = "";
[Description("显示的文字")]
public string TextEX
{
get { return textEX; }
set
{
textEX = value;
label.Text = textEX;
}
}
/// <summary>
/// 文字的颜色
/// </summary>
private Color textColor = Color.Black;
[Description("文字的颜色")]
public Color TextColor
{
get { return textColor; }
set
{
textColor = value;
label.ForeColor = textColor;
}
}
/// <summary>
/// 用于显示文本的字体
/// </summary>
private Font fontM = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)()));
[Description("用于显示文本的字体")]
public Font FontM
{
get { return fontM; }
set
{
fontM = value;
label.Font = fontM;
}
}

3.添加事件

         /// <summary>
/// 鼠标单击事件
/// </summary>
public event EventHandler ButtonClick;

4.添加鼠标响应事件

  /// <summary>
/// 鼠标单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label_Click(object sender, EventArgs e)
{
if (ButtonClick != null)
{
ButtonClick(sender, e);
}
} /// <summary>
/// 鼠标移动到控件上显示的背景色和背景图
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label_MouseMove(object sender, MouseEventArgs e)
{
if (backColorMove != Color.Transparent)
{
BackColorEX = backColorMove;
}
if (_imageMove != null)
{
_imageDefault = _imageMove;
}
} /// <summary>
/// 鼠标离开控件后显示的背景色和背景图
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label_MouseLeave(object sender, EventArgs e)
{
if (backColorLeave != Color.Transparent)
{
BackColorEX = backColorLeave;
}
if (_imageLeave != null)
{
_imageDefault = _imageLeave;
}
}

按钮效果:

C#自定义Button按钮控件

工程源程序下载