C# 用户自定义控件制作教程

Net用户自定义控件继承UserControl类,设计很简单的,像平时在窗体上拖控件一样。

下面跟着我一步步做:

1. 建立一个工程,添加用户控件。

2.在打开的窗体内输入控件名称,如:"ucButton",按确定按钮。接下来在空白区域拖放3个.Net控件。
如下图:

3.编码

     
     
/// <summary> /// C#.Net 设计用户自定义控件 /// C#制作用户自定义控件 (by www.vjsdn.net 易学网) /// </summary> /// </summary> [ToolboxBitmap( typeof (CustomControl.ucButton), " ucButton.bmp " )] public partial class ucButton : UserControl { private bool _IsFocused = false ; // 标记按钮是否为焦点状态 public ucButton() { InitializeComponent(); this .DoHideFocusedTag(); this .MyCatpionText = this .Name; } private EventHandler _OnButtonClick = null ; private string _MyCatpionText = " ucButton1 " ; /// <summary> /// 按钮标题 /// </summary> [EditorBrowsable(EditorBrowsableState.Always)] [Browsable( true )] [DefaultValue( " ucButton1 " )] public string MyCatpionText { get { return _MyCatpionText; } set { _MyCatpionText = value; lblCaption.Text = _MyCatpionText; } } /// <summary> /// 用户自定义Click事件 /// </summary> [EditorBrowsable(EditorBrowsableState.Always)] [Browsable( true )] public event EventHandler OnButtonClick { add { _OnButtonClick += new EventHandler(value); } remove { _OnButtonClick -= new EventHandler(value); } } private void lblCaption_Click( object sender, EventArgs e) { // 转移Click事件, 触发用户自定义事件 if (_OnButtonClick != null ) _OnButtonClick( this , e); } private void lblCaption_MouseDown( object sender, MouseEventArgs e) { if (_IsFocused) { lblCaption.Font = new Font(lblCaption.Font.FontFamily, lblCaption.Font.Size, FontStyle.Bold); } } private void lblCaption_MouseUp( object sender, MouseEventArgs e) { if (_IsFocused) { lblCaption.Font = new Font(lblCaption.Font.FontFamily, lblCaption.Font.Size, FontStyle.Regular); } } private void ucButton_SizeChanged( object sender, EventArgs e) { lblUnderLine.Top = this .Height - 1 ; lblUnderLine.Width = this .Width - 15 ; } /// <summary> /// 还原按钮状态 /// </summary> public void DoHideFocusedTag() { this .pictureBox1.Image = global ::vjsdn.CustomControl.Properties.Resources.GrayTag; this .lblUnderLine.Visible = false ; lblCaption.ForeColor = Color.Black; } /// <summary> /// 设计按钮为焦点状态 /// </summary> public void DoShowFocusedTag() { this .pictureBox1.Image = global ::vjsdn.CustomControl.Properties.Resources.FosedTag; this .lblUnderLine.Visible = true ; lblCaption.ForeColor = Color.Blue; } private void ucButton_MouseEnter( object sender, EventArgs e) { if ( this .Parent != null ) { foreach (Control c in this .Parent.Controls) { if (c is ucButton) (c as ucButton).DoHideFocusedTag(); } } this .DoShowFocusedTag(); _IsFocused = true ; } [EditorBrowsable(EditorBrowsableState.Always)] [Browsable( true )] [Description( "" )] public Label MyCaption { get { return lblCaption; } } private void lblCaption_MouseEnter( object sender, EventArgs e) { this .ucButton_MouseEnter(sender, e); } }

 

4. 按F5编译项目,建立一个测试窗体,在控件工具栏会看到有个齿轮图标的项目。    在窗体上拖3个ucButton。

5.设置按钮标题及事件。

6.运行程序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值