最近在准備一套自定義控件開發的課程,下面將第一個做的按鈕控件分享給大家。
其實這個控件屬於自定義控件中的擴展控件,與組合控件和GDI+開發的控件不同,這個控件是繼承原生的Button,
這個控件的目的在於把常用的圖標集成到控件中,使用會更方便。大家都知道,軟件開發UI設計是必不可免的一部分,
所以一個帶有圖標的按鈕會比一個光禿禿的按鈕要增色不少,但是大家很多時候不想或者沒法找到圖標,如果集成在
控件里,是不是會方便很多呢?其實實現原理很簡單:
實現效果如下圖所示:
接着上代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace XktControl { public partial class xktButton : Button { public xktButton() { InitializeComponent(); this.PreSetImage = ButtonPresetImage.None; this.Size = new Size(100, 32); } public xktButton(IContainer container) { container.Add(this); InitializeComponent(); } #region Enum /// <summary> /// EasyButton類型的類型 /// </summary> public enum ButtonPresetImage { /// <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 } #endregion #region Fields ButtonPresetImage _buttontype; #endregion #region Properties /// <summary> /// To show different Image and Text /// </summary> [Browsable(true)] [Description("顯示不同的圖像")] [Category("自定義屬性")] public ButtonPresetImage PreSetImage { get { return _buttontype; } set { _buttontype = value; switch (_buttontype) { case ButtonPresetImage.None: this.Image = null; this.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; break; case ButtonPresetImage.Check: this.Image = Properties.Resources.check; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Close: this.Image = Properties.Resources.close; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Cancel: this.Image = Properties.Resources.cancel; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Back: this.Image = Properties.Resources.back; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Down: this.Image = Properties.Resources.down; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Go: this.Image = Properties.Resources.go; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Up: this.Image = Properties.Resources.up; break; case ButtonPresetImage.Folder: this.Image = Properties.Resources.folder; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Refresh: this.Image = Properties.Resources.refresh; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Setting: this.Image = Properties.Resources.setting; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.FolderOpen: this.Image = Properties.Resources.folder_open; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.DocumentDelete: this.Image = Properties.Resources.document_delete; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Document: this.Image = Properties.Resources.document; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.DocumentEdit: this.Image = Properties.Resources.document_edit; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Info: this.Image = Properties.Resources.info; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.DocumentAdd: this.Image = Properties.Resources.document_add; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Gobal: this.Image = Properties.Resources.web; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Calculator: this.Image = Properties.Resources.calculator; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Calendar: this.Image = Properties.Resources.calendar; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; case ButtonPresetImage.Printer: this.Image = Properties.Resources.printer; this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.TextAlign = System.Drawing.ContentAlignment.MiddleRight; break; default: break; } this.Invalidate(); } } #endregion } }
如果大家還有什么不明白的地方,可以關注一下微信公眾號:dotNet工控上位機