这里的自定义控件是由普通控件组合而成的。
希望事件响应代码推迟到使用自定义控件的窗体里写。
步骤一:新建一个用户控件,放两个按钮,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()); }