zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    鸟哥的Linux私房菜基础学习篇(第三版)——阅读笔记(二)
    鸟哥的Linux私房菜基础学习篇(第三版)——阅读笔记(一)
    Git的使用流程及常用命令汇总
    Protocol buffers编写风格指南
    Effective Go中文版(更新中)
    go package 学习笔记 —— strconv(string与其他基本数据类型(int, float, bool)的转换)
    在iis上部署 AngularJS
    asp.net Core 2.0部署到iis上
    ABP 运行前端代码
    Asp.NET Core2.0 EF ABP Postgresql 数据迁移
  • 原文地址:https://www.cnblogs.com/xihong2014/p/4209924.html
Copyright © 2011-2022 走看看