zoukankan      html  css  js  c++  java
  • C#继承基本控件实现自定义控件

    C#继承基本控件实现自定义控件

    摘自:http://www.cnblogs.com/greatverve/archive/2012/04/25/user-control-inherit.html

    自定义控件分三类:
    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;
                }
            }
        }
    }
    复制代码

    修改.Desinger.cs

    复制代码
    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://shop108042866.taobao.com
  • 相关阅读:
    skywalking简介
    .Net Core微服务——Consul(4):搭建集群
    .Net Core微服务——Consul(3):健康检查
    .Net Core微服务——Consul(2):自动扩展、服务调用
    .Net Core微服务——Consul(1):服务发现
    SpringBoot数据访问之整合Mybatis配置文件
    SpringBoot数据访问之Druid启动器的使用
    SpringBoot数据访问之Druid数据源的自定义使用
    Spring Boot核心技术之Restful映射以及源码的分析
    SpringBoot之yaml语法及静态资源访问
  • 原文地址:https://www.cnblogs.com/nov5026/p/4700897.html
Copyright © 2011-2022 走看看