C#繼承基本控制項實現自訂控制項

來源:互聯網
上載者:User
自訂控制項分三類:
1.複合控制項:基本控制群組合而成。繼承自UserControl
2.擴充控制項:繼承基本控制項,擴充一些屬性與事件。比如繼承Button
3.自訂控制項:直接繼承自Control
第一種情況上手比較容易,也比較常用,其中也有不少技巧,慢慢總結。
比如要單獨建個類庫項目,才不會引起衝突。
怎樣把事件代碼延遲到使用者。
今天把擴充控制項簡單入門。
------------------------------------------------------------------
步驟一:這裡首先要建一個Windows控制項陳列庫項目。
步驟二:建立使用者控制項,修改代碼(注意注釋掉.Designer.cs檔案中的代碼)
擴充Buttonusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinFormControlLibrary
{
    public partial class UcButton : Button
    {
        public UcButton()
        {
            InitializeComponent();
        }
        // Creates the private variable that will store the value of your 
        // property.
        private int varValue;
        // Declares the property.
        public int ButtonValue
        {
            // Sets the method for retrieving the value of your property.
            get
            {
                return varValue;
            }
            // Sets the method for setting the value of your property.
            set
            {
                varValue = value;
            }
        }
    }
}

修改.Desinger.csnamespace WinFormControlLibrary
{
    partial class UcButton
    {
        /// <summary> 
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary> 
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Component Designer generated code

        /// <summary> 
        /// Required method for Designer support - do not modify 
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            //把這句注釋掉
            //this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        }

        #endregion
    }
}

擴充Labelusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinFormControlLibrary
{
    public partial class UcLabel : Label
    {
        public UcLabel()
        {
            InitializeComponent();
        }
        protected override void OnMouseEnter(EventArgs e)
        {
            base.OnMouseEnter(e);
            this.Font = new Font("宋體", 10F, FontStyle.Underline);
        }
        protected override void OnMouseLeave(System.EventArgs e)
        {
            base.OnMouseLeave(e);
            this.Font = new Font("宋體", 10F, FontStyle.Regular);
        }
    }
}

步驟三:在其他Windows表單項目中添加項目引用。編譯之後就在工具箱看到產生的自訂控制項。
url:http://greatverve.cnblogs.com/archive/2012/02/16/user-control-Inherit.html
參考msdn:http://msdn.microsoft.com/zh-cn/library/5h0k2e6x(v=vs.80).aspxhttp://blog.csdn.net/yysyangyangyangshan/article/details/7078471

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.