下面真正开始讲事件的内容

王朝c#·作者佚名  2006-12-17
宽屏版  字体: |||超大  

首先还是要问,什么是事件?

事件类似于异常,都是由对象触发的。不同的事件只不过是触发的时间,原因不一样罢了

所以有了Onload OnClick等事件订阅事件的含义就是给事件提供处理程序的代码在事件发生的时候执行这些代码他们称之为事件处理程序

时间可以有许多订阅的处理程序在事件触发的时候这些程序都会被调用

事件处理程序本身都是简单的函数他们唯一的限制就是要具有和委托相同的签名

发现自己的表达能力不行,还是来个例子吧

//定义委托

public delegate void MessageHandler(string messageText);

public class Connection

{

//定义事件

public event MessageHandler MessageArrived;

private Timer pollTimer;

public Connection()

{

pollTimer = new Timer(100);

pollTimer.Elapsed += new ElapsedEventHandler(CheckForMessage);

}

public void Connect()

{

pollTimer.Start();

}

public void Disconnect()

{

pollTimer.Stop();

}

private void CheckForMessage(object source, ElapsedEventArgs e)

{

Console.WriteLine("Checking for new messages.");

Random random = new Random();

if ((random.Next(9) == 0) && (MessageArrived != null))

{

//激发事件

MessageArrived("Hello Mum!");

}

}

}

public class Display

{

//事件案所要执行的函数

public void DisplayMessage(string message)

{

Console.WriteLine("Message arrived: {0}", message);

}

}

class Class1

{

static void Main(string[] args)

{

Connection myConnection = new Connection();

Display myDisplay = new Display();

//订阅事件

myConnection.MessageArrived +=

new MessageHandler (myDisplay.DisplayMessage);

myConnection.Connect();

Console.ReadLine();

}

}

总值事件的三要素要具备:

1、事件委托

2、事件的定义

3、事件的订阅

有了这三项,再在适时的时候触发该事件,相应的代码就会被执行

都怪语文没学好,惭愧

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有