每天,我们的身边都在发生各种各样的新闻和事件,有让人不快的事件:跟女朋友分手了,国足又输了,飞机失事了,海地地震了……也有幸运的事件:考试拿了个高分,申雪赵宏博拿到冠军了……等等。

什么是事件?

这个问题曾经让我十分困扰,在《C#高级编程第6版》中,对事件是这样说的:事件表示C#中已定义的一个对象,即处理通知过程的对象。可是这样说未免抽象,对于像我这样的初学者往往还是难以理解。而我的理解是,事件是处理事件的对象感兴趣的,能够感知或捕获到一种事物状态的改变。说白了,事件即改变。哲学上说,事物的运动是永恒的,静止是相对的。永恒的运动意味着事物本身在发生着改变,所以无时无刻,我们生活的这个世界和宇宙都有无穷的改变在发生,但是,这当中的绝大多数对你来说并不是事件,秘鲁总统死了,对秘鲁全国所有的人来说或许是一个事件,因为他们关心,可是对课堂正在听课全然不知的你来说就不是,除非你听到了这样一个新闻,开始关注,那么这个变化对你来说就是一个事件。所以,在这所有的变化中,你能捕获到的,感兴趣的变化,对你来说,就是一个事件。

那么,把事件这个概念放到程序设计中,又是怎样的呢?其实是一样的。同样的道理,只要机器开着,里面的硬件和软件就会发生状态的改变。可是对你要编写的代码来讲,并不是所有的这些改变都是事件。你所需要的事件,只是你对这些变化中感兴趣的极小一部分。你只需要找到你感兴趣的这样一种状态的改变,并且能够捕获它,就可以利用事件处理模型来完成你想做的事情了。

事件,其实是一个消息,WINDOWS 系统是消息驱动的,在C#中称为事件,C#中处理事件是通过委托完成,必须先理解委托才能更好的理解事件。事件是一个特殊的委托类。

一个事件例如Click事件,要执行的话,本质就是执行一个方法(也就是一个函数),C#是通过定义委托来间接调用方法的,所以,定义事件的时候一定要先定义好委托,我们之所以能直接书写控件(例如按钮)的Click方法,是因为vs已经将这些常用控件的事件和委托定义好了,所以我们直接写Click事件的方法就行了。
如果我们自己定义事件,就必须同时定义好这个事件使用的委托,然后书写委托调用的方法。

 

注:本文属于转载,原文出处http://panjunlai.blog.163.com/blog/static/581903012010420788671/

posted on 2010-11-22 09:42  Jenny_2015  阅读(1196)  评论(0编辑  收藏  举报