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按钮控件的更多相关文章

  1. WPF知识点--自定义Button(ControlTemplate控件模板)

    ControlTemplate是一种控件模板,可以通过它自定义一个模板来替换掉控件的默认模板以便打造个性化的控件. ControlTemplate包含两个重要的属性:VisualTree 该模板的视觉 ...

  2. Android控件之Button(按钮控件)和ImageButton(图片按钮控件)

    一.Button和ImageButton特证: 1.共同特证: 都可以作为一个按钮产生点击事件 2.不同特证: Button有text的属性,ImageButton没有 ImageButton有src ...

  3. thinter中button按钮控件(三)

    button控件 简单的实现: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry(" ...

  4. ListView点击事件失效(item里面有button按钮控件)解决方法

    ListView点击事件失效解决方法: 一般出现这个情况,就是你的item里面有按钮的点击事件,你的item里面有button控件,button控件是抢占焦点的,只要在你的item布局里面这样子写就可 ...

  5. tkinter中button按钮控件(三)

    button控件 简单的实现: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry(" ...

  6. 重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch

    原文:重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, Rad ...

  7. MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

    本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box)等.命令按钮就是我们前面多次提到的侠义的 ...

  8. VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

    言归正传,鸡啄米上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box ...

  9. VS2010-MFC(常用控件:按钮控件Button、Radio Button和Check Box)

    转自:http://www.jizhuomi.com/software/182.html 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check ...

随机推荐

  1. autorelease' is unavailable

    ARC forbids explicit message send of'release' 'release' is unavailable: not available inautomatic re ...

  2. windows server 2008 R2安装图片浏览器/照片查看器方法

    有用户的电脑安装了windows server 2008 R2,浏览大量图片时很不方便,因为系统中没有照片查看器或图片浏览器.其实,win2008 R2是有照片查看器的,只是默认情况下没有开启.参考以 ...

  3. WIN10平板系统 如何自定义分辨率,修改分辨率

    从以下网址下载Intel网卡驱动,注意只要下载zip版本的(如果是exe版本的,双击将提示win10无法为此计算机验证正在安装的驱动程序,也包括你用驱动精灵这种软件,也会安装的时候由于这个问题装不上) ...

  4. redis 基本信息查询

    在客户端可以用telnet命令 telnet ip port 再输入info 返回如下信息:

  5. linux nfs共享文件

    linux文件共享可以有多种方式:samba,nfs,ftp等等 nfs在linux之间效率高些: function nfs(){ share_folder="/data1 192.168. ...

  6. AaronYang WCF教程目录

    ============================原创,讲究实践===================== 1. 那天有个小孩教我WCF[一][1/3]     基本搭建      阅读    ...

  7. export / import 温故而知新

    认知一: 导出的对象被修改,依然会影响原来的对象. 仔细想想这是理所当然的事(说明导出的依然是对象指向内存的地址,所以通常还需要结合深拷贝使用) /** export const state = { ...

  8. IT? 挨踢

    中国的IT,是最憋屈的IT. 他们掌握着正常人看不懂的英文+字母+标点符号组成的各类代码语言 他们像作者一样从无到有,从空白的白纸上敲出上千上万条华丽的计算机语言 但是他们承受着正常人的鄙视: 我的需 ...

  9. iOS多个storyboard间跳转

    Stroyboard 可以被看作一个管理View画面的集合.也就是说一个iOS专案裡面并没有限制只能有一个Storyboard.所以在你的APP专案中,你可以把功能相近的View放到同一个APP之中, ...

  10. 自动化CodeReview - ASP.NET Core依赖注入

    自动化CodeReview系列目录 自动化CodeReview - ASP.NET Core依赖注入 自动化CodeReview - ASP.NET Core请求参数验证 我个人比较懒,能自动做的事绝 ...