C#继承基本控件实现自定义控件 (转帖)

自定义控件分三类: 1.复合控件:基本控件组合而成。继承自UserControl 2.扩展控件:继承基本控件,扩展一些属性与事件。比如继承Button 3.自定义控件:直接继承自Control 第一种情况上手比较容易,也比较常用,其中也有不少技巧,慢慢总结。 比如要单独建个类库项目,才不会引起冲突。 怎样把事件代码推迟到使用者。 今天把扩展控件简单入门。

------------------------------------------------------------------

步骤一:这里首先要建一个Windows控件库项目。

步骤二:新建用户控件,修改代码(注意注释掉.Designer.cs文件中的代码)

扩展Button

using 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;

            }

        }

    }

}

 

namespace 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

    }

}

扩展Label

using 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).aspx

http://blog.csdn.net/yysyangyangyangshan/article/details/7078471

 

posted on 2015-01-08 08:51  xihong  阅读(595)  评论(0编辑  收藏  举报

导航