对事件与委托的理解(4) 心得

来源:互联网 发布:大话骰软件下载 编辑:程序博客网 时间:2024/06/04 18:51

通过学习MSDN中有关事件与委托的相关章节的知识,对事件,委托,事件数据,事件连结,引发事件有了初步的了解.
顺便说一句,MDSN中的东东真的很棒,很多时候自己都是在骑驴找驴,自己想要的答案,很多都可以在MDSN中找到.
学起来有些吃力,不过学习应该是一件快乐的事情.
因为能通过集中精力,理解与消化MSDN中的知识,然后把他们变成自己的东西,自己也就在学习中得到成长.
说回来.
通过初步的学习
我知道了:
eventhandler是一个委托类,通过这条语句声明:  public Delegate eventnamehandler(s as object,e as eventargs)
eventargs:是一个事件数据类,可以通过对eventargs类的继承,重写自己需要的事件数据类,然后在相关的委托中使用.
事件的定义通过event来实现:public event click as eventhandler
要成功响应事件,事件响应程序的签名必须与对应的事件的签名一致,即(s as object,e as eventargs)

反应到实际的编程工作中
我做了一个用户控件,用于对一个系统中的数据进行显示,需要实现用户对指定的记录点击后执行相应的删除与编辑操作,而系统对用户控件点击的处理也因为使用模块的不同,而有不同的处理.
因此我就需要在用户控件中声明一个事件,用来向调用它的父窗体发送一个消息,而事件的响应则放到父窗体的事件响应函数中,通过handler连接过来.

于是我需要
第一步:在用户控件中声明一个事件,并编写相关的事件引发代码

public class databrower
    ....
    delegate    EditRecordEventHandler(s as object,e as System.Web.UI.WebControls.DataGridCommandEventArgs)
    public event EditRecordClick as editrecordeventhandler
  
    .....

    private sub DataGrid_ItemCommand(s as object,e As System.Web.UI.WebControls.DataGridCommandEventArgs)handler datagrid.itemcommand
        rainsevent EditReocrdClick(s,e)
    end sub
   
    ...
end class

第二部:在父窗口中编写事件处理函数

.....

private sub DataBrower_EditRecordClick(s as object,e as System.Web.UI.WebControls.DataGridCommandEventArgs) handler databrower.EditRecordClick
           ......
end sub
.....


原创粉丝点击