当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 下面真正开始讲事件的内容

ASP.NET
使用NUnit进行单元测试
[FxCop.设计规则]1. 抽象类不应该拥有构造函数
遍历XML文档返回二维数组(ASP)(更新版)
c#中的interface abstract与virtual
[VB.NET] Single & Double
asp.net验证码生成类(参考)
JAVA开发者应该去的20个英文网站 [摘]
C#中关于GDI+输出的问题
XML 命名空间提供了一种避免元素命名冲突的方法。
VS.NET 2005 Beta 2初体验(3)—操作SQL Mobile数据库
VS.NET 2005 Beta 2初体验(1)-用C#开发Managed代码
VS.NET 2005 Beta 2初体验(2)-用C++开发Native代码
VS.NET 2005 Beta2初体验(4)-Notification控件
XmlHttp异步获取网站数据的例子
利用C#编写一个简单的抓网页应用程序
C#中结构与类的区别
在.NET中实现彩色光标,动画光标和自定义光标
C#2.0新特性探究之模拟泛型和内置算法
C#2.0 新特性探究之委托与匿名委托
获取本机的本地上网IP地址

ASP.NET 中的 下面真正开始讲事件的内容


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 48 ::
收藏到网摘: n/a


首先还是要问,什么是事件?
事件类似于异常,都是由对象触发的。不同的事件只不过是触发的时间,原因不一样罢了
所以有了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、事件的订阅
有了这三项,再在适时的时候触发该事件,相应的代码就会被执行

都怪语文没学好,惭愧