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;
            }
        }
    }
}
修改.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:
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值