欢迎光临
我们一直在努力

事件的理解!-.NET教程,评论及其它

建站超值云服务器,限时71元/月

这是个人学习中对事件的一点点初步理解,希望高手能指点一下!

事件:个人认为只有相当于控件的object才可能有,所以,事件都是控件的一个属性。

先看一下msdn中的一段解释(这是给控件建立事件的一般步骤):

1.声明事件 若要在类内声明事件,首先必须声明该事件的委托类型(如果尚未声明的话)。

public delegate void changedeventhandler(object sender, eventargs e);

委托类型定义传递给处理该事件的方法的一组参数。多个事件可共享相同的委托类型,因此仅当尚未声明任何合适的委托类型时才需要执行该步骤。

接下来,声明事件本身。

public event changedeventhandler changed;

声明事件的方法与声明委托类型的字段类似,只是关键字 event 在事件声明前面,在修饰符后面。事件通常被声明为公共事件,但允许任意可访问修饰符。

2.调用事件 类声明了事件以后,可以就像处理所指示的委托类型的字段那样处理该事件。如果没有任何客户将委托与该事件挂钩,该字段将为空;否则该字段引用应在调用该事件时调用的委托。因此,调用事件时通常先检查是否为空,然后再调用事件。

if (changed != null)

changed(this, e);

调用事件只能从声明该事件的类内进行。

3.与事件挂钩 从声明事件的类外看,事件像个字段,但对该字段的访问是非常受限制的。只可进行如下操作:

在该字段上撰写新的委托。

从字段(可能是复合字段)移除委托。

使用 += 和 -= 运算符完成此操作。为开始接收事件调用,客户代码先创建事件类型的委托,该委托引用应从事件调用的方法。然后它使用 += 将该委托写到事件可能连接到的其他任何委托上。

// add "listchanged" to the changed event on "list":

list.changed += new changedeventhandler(listchanged);

当客户代码完成接收事件调用后,它将使用运算符 -= 从事件移除其委托。

// detach the event and delete the list:

list.changed -= new changedeventhandler(listchanged);

对于其中第三个步骤个人认为这样理解更合适一点:

3.当外部使用该类(控件)的时候,只需给该类的事件属性赋上一个相应的值即可(委托类型,一般是eventhandler类型,并给委托一格处理函数,用+=或者-=操作)。

//当声明该控件后直接赋值就行了,不在需要什么event等的事件声明

即list.changed -= new changedeventhandler(listchanged);//

然后完成listchaged函数即可

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 事件的理解!-.NET教程,评论及其它
分享到: 更多 (0)

相关推荐

  • 暂无文章