C#.Net用户自定义控件制作教程
作者:C/S框架网  发布日期:2011/06/26 21:39:48
C#.Net用户自定义控件制作教程


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

下面跟着我一步步做:

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

贴图图片

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

贴图图片

3.编码
/// <summary>
/// C#.Net 设计用户自定义控件
/// C#制作用户自定义控件
/// </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.运行程序

贴图图片

Source Code:



点击下载附件 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
上一篇 下一篇