自定义扩展控件
项目创建
创建项目时要去选择类库

然后去删除这个Class1.cs文件

添加新项
在添加新项时去选择组件类

会得到:

删除这段代码
public Component1(IContainer container)
{
container.Add(this);
InitializeComponent();
}
会变成:

修改继承 ,这里我选择的是继承Button , 不过这里是没有的 ,需要添加引用—>程序集 去寻找System.Windows.Forms 添加引用即可 ,这里就已经可以正常使用了

自定义控件创建
可以引用图片资源 ,但是这里默认是没有的 ,需要自己去添加
添加:右键属性 ,点击创建即可

然后就是引入资源文件了
创建枚举 , 在public partial class ButtonN : Button {} 的上方去选择创建 ,也就是跟他同一个等级
/// <summary>
/// <summary>
/// 按钮图标
/// </summary>
/// </summary>
public enum ButtonImage
{
/// <summary>
/// 没有图标
/// </summary>
None,
/// <summary>
/// 确认图标
/// </summary>
Check,
/// <summary>
/// 关闭图标
/// </summary>
Close,
/// <summary>
/// 取消图标
/// </summary>
Cancel,
/// <summary>
/// 退后图标
/// </summary>
Back,
/// <summary>
/// 向下图标
/// </summary>
Down,
/// <summary>
/// 前进图标
/// </summary>
Go,
/// <summary>
/// 向上图标
/// </summary>
Up,
/// <summary>
/// 文件夹图标
/// </summary>
Folder,
/// <summary>
/// 刷新图标
/// </summary>
Refresh,
/// <summary>
/// 设置图标
/// </summary>
Setting,
/// <summary>
/// 文件打开图标
/// </summary>
FolderOpen,
/// <summary>
/// 文件删除图标
/// </summary>
DocumentDelete,
/// <summary>
/// 文件图标
/// </summary>
Document,
/// <summary>
/// 文件编辑图标
/// </summary>
DocumentEdit,
/// <summary>
/// 信息图标
/// </summary>
Info,
/// <summary>
/// 文件添加图标
/// </summary>
DocumentAdd,
/// <summary>
/// 全局图标
/// </summary>
Gobal,
/// <summary>
/// 计算图标
/// </summary>
Calculator,
/// <summary>
/// 日期图标
/// </summary>
Calendar,
/// <summary>
/// 打印图标
/// </summary>
Printer
}
去选择使用
private ButtonImage buttonImage=ButtonImage.None;
[Browsable(true)]
[Category("自定义属性")]
[Description("设置或获取按钮样式")]
public ButtonImage ButtonImage
{
get { return buttonImage; }
set {
buttonImage = value;
switch (buttonImage)
{
case ButtonImage.None:
this.Image = null;
this.TextAlign = ContentAlignment.MiddleCenter;
break;
case ButtonImage.Check:
this.Image = Properties.Resources.check;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Close:
this.Image = Properties.Resources.close;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Cancel:
this.Image = Properties.Resources.cancel;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Back:
this.Image = Properties.Resources.back;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Down:
this.Image = Properties.Resources.down;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Go:
this.Image = Properties.Resources.go;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Up:
this.Image = Properties.Resources.up;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Folder:
this.Image = Properties.Resources.folder;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Refresh:
this.Image = Properties.Resources.refresh;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Setting:
this.Image = Properties.Resources.setting;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.FolderOpen:
this.Image = Properties.Resources.folder_open;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.DocumentDelete:
this.Image = Properties.Resources.document_delete;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Document:
this.Image = Properties.Resources.document;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.DocumentEdit:
this.Image = Properties.Resources.document_edit;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Info:
this.Image = Properties.Resources.info;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.DocumentAdd:
this.Image = Properties.Resources.document_add;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Gobal:
this.Image = Properties.Resources.web;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Calculator:
this.Image = Properties.Resources.calculator;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Calendar:
this.Image = Properties.Resources.calendar;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
case ButtonImage.Printer:
this.Image = Properties.Resources.printer;
this.ImageAlign = ContentAlignment.MiddleLeft;
this.TextAlign = ContentAlignment.MiddleRight;
break;
default:
break;
}
}
}
}
自定义控件库使用
首先设置好之后需要重新设置重新生成解决方案 , 然后在工具箱中就能够使用了

这里可以直接拖动 ,然后去选择这个自定义属性 ,到这里基本就已经算是基本完成了


浙公网安备 33010602011771号