在C#开发过程中,系统提供的按钮风格有时并不能满足我们的要求,如何自己制作一些漂亮的按钮呢?
(1)新建工程
新建工程可以创建Windows窗体应用程序,也可以创建类库,这个看个人需求,如果想我们自定义的控件供各个项目使用,则创建类库,后续项目可以以插件的方式加入我们自定义的控件,本例为了演示方便,创建Windows窗体应用程序,自定义的插件仅供该项目使用。
(2)添加用户控件
(3)设置按钮样式
在工具箱->所有Windows窗体找到PictureBox和Label添加,并设置PictureBox属性如图所示:
label属性设置如图所示:
(4)编写代码
public CustomButton()
{
InitializeComponent();
pictureBox1.Controls.Add(buttonText);
}
/// <summary>
/// 鼠标移动到控件上方显示的图片
/// </summary>
private Image backImageMove = global::MyFormDemo.Properties.Resources.图片1;
[Description("鼠标移动到控件上方显示的图片")]
public Image BackImageMove
{
get { return backImageMove; }
set { backImageMove = value; }
}
/// <summary>
/// 鼠标离开控件显示的图片
/// </summary>
private Image backImageLeave = global::MyFormDemo.Properties.Resources.图片2;
[Description("鼠标离开控件显示的图片")]
public Image BackImageLeave
{
get { return backImageLeave; }
set
{
backImageLeave = value;
pictureBox1.Image = backImageLeave;
}
}
/// <summary>
/// 按钮文字显示
/// </summary>
private string textEX = "";
[Description("按钮显示的文字")]
public string BtnText
{
get { return textEX; }
set
{
textEX = value;
buttonText.Text = textEX;
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
pictureBox1.Image = backColorMove;
}
private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
pictureBox1.Image = backImageLeave;
}
public void buttonText_Click(object sender, EventArgs e)
{
OnClick(e);//这句话很关键!!!
}
(5)设置鼠标经过和离开事件
分别为pictureBox1和buttonText设置鼠标经过和离开事件
(6)设置鼠标经过和离开图片
如图所示,可以看到为按钮定义的属性:
添加BackImageLeave和BackImageMove图片
(7)效果展示
如图所示,按钮颜色变化其实是通过切换不同的图片完成。
重要:自定义控件重新生成后工具箱不能显示自定义控件参考如下设置
如果按照上述步骤实自定义控件后现有问题可以参照源码https://download.csdn.net/download/weixin_42266753/11739838
当然也可以参考https://www.cnblogs.com/JiYF/p/8686463.html