上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 52 下一页

2012年6月28日

C#事件-预定义事件处理方式

摘要: 学习事件,我觉得最不好理解的就是C#中预定义了事件,事件有很多种,比如说鼠标的事件:MouserMove,MouserDown等,键盘的事件:KeyUp,KeyDown,KeyPress。EventArgs是包含事件数据的类的基类,用于传递事件的细节。有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。事件的类型一定是委托,委托为引发事件的类担当事件发送器的角色EventHandler是一个委托声明如下(其在.Net类库中如下声明的)public delegate void 阅读全文

posted @ 2012-06-28 09:03 流星落 阅读(358) 评论(0) 推荐(0) 编辑

C#事件-趣谈事件与委托

摘要: 事件与委托似乎很难以理解,这是因为它们的使用方式与常用的编码有很大的差别,例如通常编写的都是同步代码,调用一个类型的方法,会即刻出现方法执行的结果,这是符合逻辑的。但在某些情况中,同步代码未必满足需求,拿公共汽车来打个比方,如果交通管制中心希望每一辆公车到达一个站点时都发送给自己一个信号以便自己能够随时掌握交通状况,使用同步代码,公汽对象肯定需要调用管制中心对象,这样就出现了我们一直不愿意看到的情况:两个类型紧密地耦合在一起。既然要其它类型对自己的行为作出反应,亲自调用其类型的方法似乎不可避免,在同步代码中,很难避免这种紧密的类型调用关系。另一个差别是在一般情况下,我们只将属性作为参数传递给方 阅读全文

posted @ 2012-06-28 09:02 流星落 阅读(196) 评论(0) 推荐(0) 编辑

C#事件-自定义事件的使用方法

摘要: 1、声明一个委托类 public delegate SomethingChangedHandler(object sender,EventArgs e);2、在你的类中声明一个事件绑定到该委托 public event SomethingChangedHandler Changed;3、在相应的方法中触发此事件public void ChangeSomething(){Changed(this,new EventArgs); //触发事件}4、在调用者订阅事件your class's instance.Changed+=new SomethingChangedHandler(你的方法名 阅读全文

posted @ 2012-06-28 09:01 流星落 阅读(1159) 评论(0) 推荐(0) 编辑

C#事件-支持发布者/订阅者模式

摘要: C#事件支持发布者/订阅者模式,发布者将事件通知给订阅者,而订阅者在事件发生时调用已经注册好的事件处理函数。首先要在一个类中定义某种类型的委托和此种委托类型事件。然后在该类中通过一个函数,将该事件进行触发。 当外部其他类有对该事件订阅时候,其他类会转去处理该事件的处理程序。从而完成信息的交流。这样做,一个最大的好处就是事件触发类不用关心该事件的所有处理程序,只关心他自己的工作以及他所关心的事件即可。而对该事件感兴趣的类会首先订阅该事件,当该事件发生时会捕捉到事件信息,并转去处理。举一个简单的例子 有两个类,机器mechine类,和维修工check类。mechine类在运行过程当中如果出现某种故 阅读全文

posted @ 2012-06-28 09:01 流星落 阅读(593) 评论(0) 推荐(0) 编辑

C#事件-定义事件

摘要: 具体方法: 定义事件委托定义:public delegate void EventFountion(Param param);事件定义:public event EventFountion eventFountion;调用事件:if (eventFountion!= null) eventFountion(this.param);使用事件事件触发后的方法public void a_eventFountion(Param param){...}注册事件ClassA a=new ClassA();a.eventFountion+=new ClassA.EventFountion(a_eventFo 阅读全文

posted @ 2012-06-28 08:59 流星落 阅读(306) 评论(0) 推荐(0) 编辑

C#事件-综合案例分析

摘要: 面试题:晚上猫大叫一声,主人被惊醒,老鼠被下跑。用C#实现这个过程。这个题目中一共有三个对象:猫、主人和老鼠。这三个对象之间即不属于Is a...的关系,也不属于Has a...的关系,但三者又有相互联系。不能把主人和老鼠作为猫的成员变量出现,因为猫对象并不拥有主人和老鼠这两个对象。不能在猫任何方法中实例化主人和老鼠。因为猫的任何动作都不会动态产生主人和老鼠。不能在猫的Cry方法中传入主人对象和老鼠对象,因为猫大叫不是为了叫醒主人或吓跑老鼠,可能是猫正在说梦话。所以把主人和老鼠对象传递给猫的Cry()方法也不合情理。通过上面分析我们看到,即不能把主人和老鼠作为猫的成员变量,又不能动态产生或接收 阅读全文

posted @ 2012-06-28 08:58 流星落 阅读(270) 评论(0) 推荐(0) 编辑

C#事件-事件本身就是一种多播委托

摘要: C#中的事件就是委托的一个变量。它和属性、方法一样,都是类的成员。只不过事件是指向一个方法,当事件被触发时,就会执行对象的相关方法。事件的这种对方法的引用并不是写死在代码里面的,而是可以进行更改的。辟如:我们在DotNet中按钮的OnClick事件,它可以指向符合OnClick事件签名的任何一个方法。1.事件的定义使用event关键字:public event CryHandler DuckCryEvent;其中的CryHandler是一个delegate。从上面的代码我们可以看出来:事件就是一个委托类型的变量。private delegate void CryHandler();2.指定事件 阅读全文

posted @ 2012-06-28 08:57 流星落 阅读(693) 评论(0) 推荐(0) 编辑

C#事件-事件处理

摘要: 万物皆对象!对象与对象之间不仅仅是存在关系,更是具有千丝万缕的联系。即:如何使得一个对象发生变化时,另一个对象也能随之发生变化。这种“一个对象的状态改变导致其它对象状态改变”的现象,我们称之为事件。定义:事件,是用来描述类的成员发生改变的对象。我们举一个例子,来理解上面的定义: 例如:路边有一条狗。你看它不爽,于是走上前去踢了它一脚。我们来看紧接着发生的事情:1、这条狗很胆小,它跑掉了;2、这条狗是恶狗,它将你反咬一口;3、这条狗身体瘦弱,经不起你的一脚,一命呜呼了;4、……我想说明的是:在你真正踢它之前,你无法知道它会干些什么!在这件事发生之前,这条狗也无法预计你会在什么时候踢它,它唯一能. 阅读全文

posted @ 2012-06-28 08:56 流星落 阅读(339) 评论(0) 推荐(0) 编辑

C#事件-事件学习好例子

摘要: public class ExWebDelegate2{public static void Main(){ Console.WriteLine("场景开始了"); Manager wang = new Manager(); Employee zhang = new Employee(); zhang.PlayGame += new PlayGameHandler(wang.SubMoney); //zhang.PlayGame是事件 /* * 当PlayGame事件产生时,就会调用Manager类的SubMoney方法 * */ Console.WriteLine(&qu 阅读全文

posted @ 2012-06-28 07:41 流星落 阅读(180) 评论(0) 推荐(0) 编辑

C#事件-换一个角度理解委托和事件

摘要: 我们建一个控制台程序。未使用委托、事件之前的代码 using System; class Program { static void Main(string[] args) { //实例化一个button类 Button btn = new Button(); btn.Click(); } } //首先要定义一个Button类,里面应该有一个Click方法 public class Button { //Click方法调用固定的方法 ... 阅读全文

posted @ 2012-06-28 07:40 流星落 阅读(243) 评论(0) 推荐(0) 编辑

上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 52 下一页

导航