c#中委托(delegate)及事件(event)的实现方法
Google和Baidu是两位很好的同学,用小学时的话说就是:它们是两位不说话的好老师!在碰到问题的时候总能通过它们找到方法,有一点就是好多人的blog或page都一样,是拷贝的,或者是添加一个原文的链接。链接不是很可靠,总有网页不存在的时候,而拷贝他人的总有版权争议。因此,为了自己的方便学习也为了能给广大网友的参考,我的blog上的所有程序都是参考相关知识后自主开发的。当然我写的代码是随便大家拷贝的,只要大家觉得有用 : )
using System;
/// <summary>
/// 程序演示委托(delegate)及事件(event)的实现方法
/// </summary>
class MyButton //模拟一个button
{
public delegate void ButtonEventHander(object sender); //声明一个委托函数
public event ButtonEventHander beforeButtonClick; //按钮单击前触发的事件
public event ButtonEventHander afterbuttonClick; //按钮单击后触发的事件
public void Click() //按钮的单击方法
{
beforeButtonClick(this);
Console.WriteLine("Button Clicking");
afterbuttonClick(this);
}
}
class MyForm //模拟窗体类
{
MyButton aButton; //放置一按钮
public MyForm()
{
aButton = new MyButton();
//给按钮添加事件处理方法
aButton.beforeButtonClick += new MyButton.ButtonEventHander(aButton_beforeButtonClick);
aButton.afterbuttonClick += new MyButton.ButtonEventHander(aButton_afterbuttonClick);
}
void aButton_afterbuttonClick(object sender)
{
Console.WriteLine("After Button Click!");
}
void aButton_beforeButtonClick(object sender)
{
Console.WriteLine("Before Button Click!");
}
public static void Main()
{
MyForm aForm = new MyForm();
aForm.aButton.Click();
Console.Read();
}
}