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

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

Button按钮控件设计
1.添加一个用户自定义控件ButtonEX
按钮组成:lable标签一个,Dock设置为填充

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按钮控件的更多相关文章
- WPF知识点--自定义Button(ControlTemplate控件模板)
ControlTemplate是一种控件模板,可以通过它自定义一个模板来替换掉控件的默认模板以便打造个性化的控件. ControlTemplate包含两个重要的属性:VisualTree 该模板的视觉 ...
- Android控件之Button(按钮控件)和ImageButton(图片按钮控件)
一.Button和ImageButton特证: 1.共同特证: 都可以作为一个按钮产生点击事件 2.不同特证: Button有text的属性,ImageButton没有 ImageButton有src ...
- thinter中button按钮控件(三)
button控件 简单的实现: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry(" ...
- ListView点击事件失效(item里面有button按钮控件)解决方法
ListView点击事件失效解决方法: 一般出现这个情况,就是你的item里面有按钮的点击事件,你的item里面有button控件,button控件是抢占焦点的,只要在你的item布局里面这样子写就可 ...
- tkinter中button按钮控件(三)
button控件 简单的实现: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry(" ...
- 重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch
原文:重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, Rad ...
- MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)
本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box)等.命令按钮就是我们前面多次提到的侠义的 ...
- VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)
言归正传,鸡啄米上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box ...
- VS2010-MFC(常用控件:按钮控件Button、Radio Button和Check Box)
转自:http://www.jizhuomi.com/software/182.html 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check ...
随机推荐
- 奇怪吸引子---LuChen
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- windows多线程同步--临界区
推荐参考博客:秒杀多线程第五篇 经典线程同步 关键段CS 关于临界区的观念,一般操作系统书上面都有. 适用范围:它只能同步一个进程中的线程,不能跨进程同步.一般用它来做单个进程内的代码快同步,效率 ...
- ui-router 1.0 003 lazyloading
ui-router lazyloading 支持懒加载, 真正需要的时候再去加载模块
- [Aaronyang紫色博客] 写给自己的WPF4.5-Blend5公开课系列 3 - 再来一发
我的文章一定要做到对读者负责,否则就是失败的文章 --------- www.ayjs.net aaronyang技术分享 深入路径的Blend技巧课,Ay原创,自己琢磨讲解 内容已经迁 ...
- awk的些许小技巧
一句话kill掉名为navimain进程的shell脚本(利用awk的列操作能力) `ps|grep navimain | awk 'NR==1 {print $1}'`
- mark 阿里支付
开源软件企业版特惠高校版博客 我的码云 ·· 8月18日(周六)成都源创会火热报名中,四位一线行业大牛与你面对面,探讨区块链技术热潮下的冷思考. 开源项目 > WEB应用开发 > Web开 ...
- Jmeter发送Json请求
jmeter发送的post请求,可以是json请求,和普通的post请求稍微有点区别,那么怎么用jmeter发送json请求呢? 首先要找一个json请求的例子,这个例子是携程网搜索机票, 网址为:h ...
- struts2:数据标签
目录 数据标签1. a标签2. set标签3. push标签4. bean/param标签5. date标签6. include标签7. url标签8. property标签9. debug标签10. ...
- 【iCore4 双核心板_FPGA】例程四:Signal Tapll 实验——逻辑分析仪
实验现象: 三色led轮流闪烁,具体的逻辑分析仪使用教程请参考iCore3逻辑分析仪例程 核心代码: module signal_ctrl( input clk_25m, input rst_n, o ...
- git push 失败
先上图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvV29KaWFvRGFaaG9uZw==/font/5a6L5L2T/fontsize/400/fil ...