自定义扩展控件

项目创建

创建项目时要去选择类库

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

posted @ 2025-10-02 07:18  恨水长秋  阅读(13)  评论(0)    收藏  举报