C#窗体程序【用户控件-窗体】委托事件

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

  

 

posted @ 2016-12-27 14:55  大师兄丶  阅读(2626)  评论(0编辑  收藏  举报