Gear.Turbo

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();
    }
}

posted on 2006-12-22 23:09  lsp  阅读(315)  评论(1编辑  收藏  举报

导航