基於C#開發的擴展按鈕控件


  最近在准備一套自定義控件開發的課程,下面將第一個做的按鈕控件分享給大家。

其實這個控件屬於自定義控件中的擴展控件,與組合控件和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工控上位機


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM