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 ...
随机推荐
- AngularJS中使用$http对MongoLab数据表进行增删改查
本篇体验使用AngularJS中的$http对MongoLab数据表进行增删改查. 主页面: <button ng-click="loadCourse()">Load ...
- 转:深入理解Java G1垃圾收集器
本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...
- python3 requests获取某网站折线图上数据
比如要抓取某网站折线图上数据,如下截图: 借助Chrome开发者工具Network.经过分析发现获取上面的热度数据,找到对应的事件url:https://pcw-api.iqiyi.com/video ...
- 怎么重置mysql的自增列AUTO_INCREMENT初时值
重置 MySQL 自增列 AUTO_INCREMENT 初时值 注意, 使用以下任意方法都会将现有数据删除. 方法一: delete from tb1; ALTER TABLE tbl AUTO_IN ...
- CentOS 7源码安装zabbix
一.Zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统 ...
- ROS actionlib学习(三)
下面这个例子将展示用actionlib来计算随机变量的均值和标准差.首先在action文件中定义goal.result和feedback的数据类型,其中goal为样本容量,result为均值和标准差, ...
- Cannot attach the file as database
Cannot attach the file as database这个异常是在EF的code frist里经常出现的,解决方法很简单,只要重新启动一下V11实例即可. CMD> sqlloca ...
- 有关Linux下request.getRealPath("/")获取路径的问题
request.getRealPath("/") 在window获取的是服务器的根目录,结尾包含分隔符, 如E:\apache-tomcat-6.0.29-bak\apache-t ...
- block 对外部引用变量的处理
MRC 环境 一.静态变量 和 全局变量 在加和不加 __block 都会直接引用变量地址.也就意味着 可以修改变量的值.在没有加__block 参数的情况下. 全局block 和 栈block ...
- Atitit easyui翻页组件与vue的集成解决方案attilax总结
Atitit easyui翻页组件与vue的集成解决方案attilax总结 ===============使用1 ===========\paggingUtil_easyui_vue.js2 C:\U ...