当前位置: 首页 > news >正文

自定义扩展控件

项目创建

创建项目时要去选择类库

image

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

image

添加新项

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

image

会得到:

image

删除这段代码

        public Component1(IContainer container){container.Add(this);InitializeComponent();}

会变成:

image

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

image

自定义控件创建

可以引用图片资源 ,但是这里默认是没有的 ,需要自己去添加

添加:右键属性 ,点击创建即可

image

然后就是引入资源文件了

创建枚举​ , 在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;}}}}

自定义控件库使用

首先设置好之后需要重新设置重新生成解决方案 , 然后在工具箱中就能够使用了

image

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

image

http://www.hskmm.com/?act=detail&tid=22714

相关文章:

  • 千景导航站 - 一站式开发者资源与技术工具导航平台
  • 2025十一集训——Day1模拟赛
  • 2025十一集训——Day1做题
  • AI元人文:价值共生体系统——构建人机文明的演进基石
  • 2025.9.30 刷题
  • 荣耀毕业了
  • “掐尖招生”终于引起高层的警觉
  • 汽车央企“哄抢”华为
  • CF2150D
  • AI元人文:致同行者书
  • tp5 基础nginx伪静态
  • 异或运算的一个小等式
  • AI元人文:“现实与价值”的生态——走向一种基于博弈与演化的协同智能
  • 169. 多数元素
  • Ai元人文:最后的客观与乐观
  • AI元人文:价值原语构想——迈向动态博弈的价值生态
  • 《多分支条件判断优化:switch-case 结构的技术价值分析》
  • Codeforces 1385G Columns Swaps 题解 [ 蓝 ] [ 扩展域并查集 ] [ 二分图最大权匹配 ] [ 基环树建模 ]
  • 72. 编辑距离
  • PlantUML 完整教程:从入门到精通
  • 你妈的
  • test6
  • test7
  • 学习java的第三天
  • vscode github 推送失败
  • 信奥大联赛周赛(提高组)#2515-S 赛后盘点
  • 虚拟机仅主机模式下使用ssh远程连接Linux(EHEL8)连接慢,需要等待30秒以上
  • VLC Player插件和自动激活
  • 第七天
  • logback.xml 常用配置详解 - Higurashi