这里的自定义控件是由普通控件组合而成的。
  希望事件响应代码推迟到使用自定义控件的窗体里写。
  步骤一:新建一个用户控件,放两个按钮,Tag分别是btn1,btn2.
  这两个按钮的共用单击事件处理代码如下:
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 UcDll
{
public partial class UcTest : UserControl
{
public UcTest()
{
InitializeComponent();
}
//定义委托
public delegate void BtnClickHandle(object sender, EventArgs e);
//定义事件
public event BtnClickHandle UserControlBtnClicked;
private void btn_Click(object sender, EventArgs e)
{
if (UserControlBtnClicked != null)
UserControlBtnClicked(sender, new EventArgs());//把按钮自身作为参数传递
}
}
}
  步骤二:当用户拖一个自定义控件在窗体的时候,
  在事件里可以找到UserControlBtnClicked事件。
private void ucTest1_UserControlBtnClicked(object sender, EventArgs e)
{
Button btn = sender as Button;
MessageBox.Show(btn.Tag.ToString());
}
  这个操作很有用。