C#中的申明委托和事件

 建立委托,对委托赋予事件,建立事件的执行接口,这样一来,可以把事件真正的执行过程扔出到其他类中。委托可以执行不同的函数,委托的实质就是函数的调用:

例如:在类CC中要执行事件A,申明委托D,可将D的执行过程扔出到类BB中。

CC:

  public delegate void FileEventHandler(object sender, EventArgs e); //D

  public event FileEventHandler ClickClose;

void cbselect_SelectedIndexChanged(object sender, EventArgs e)

        {

            DataWrite.FileName = cbselect.SelectedItem.ToString();

            this.ClickClose(this, e);    //A  

        }

BB:

    void display()

        {

            CC fileForm = new CC();

            fileForm.StartPosition = FormStartPosition.CenterScreen;

            fileForm.ClickClose += new SysFile.FileEventHandler(fileForm_ClickClose);

            fileForm.ShowDialog();

         

        }

 

        void fileForm_ClickClose(object sender, EventArgs e) //事件的真正执行者

        {

            ReadAndWrite = new Thread(SysRw);

            ReadAndWrite.IsBackground = true;

            ReadAndWrite.Start();

 

            AddData = new Thread(SysAddData);

            AddData.IsBackground = true;

            AddData.Start();

            ((Form)sender).Close();

        }

 

解释:

在CC中要执行ClickClose功能事件,“this.ClickClose(this, e);”表示调用执行事件,BB类中fileForm.ClickClose += new SysFile.FileEventHandler(fileForm_ClickClose);此处申明事件的执行函数为“fileForm_ClickClose”,委托其实就是函数的调用过程。

在CC类中并没用实质的致命事件具体要如何执行,只是提供了事件的接口,在BB类中通过实例化CC,才具体指明该事件的调用函数,若存在EE类,同样可在该类中定义事件功能如:

类EE:

    void sendMessage()

        {

            CC file = new CC();

            file.ClickClose += new SysFile.FileEventHandler(file_ClickClose);

             }

  void file_ClickClose(object sender, EventArgs e) //事件的真正执行者

        {

                   ..............................

         }

生活举例:

女儿想吃棒冰了,但又不想自己顶着太阳出去买(买棒冰是一个event),所以她叫他倒霉的老爸去买(delegate),最后女儿吃到了棒冰。

这就是一个委托的过程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值