2012/12/3 C#事件处理机制
来源:互联网 发布:静态头像源码 编辑:程序博客网 时间:2024/06/05 16:36
/*
* 由SharpDevelop创建。
* 用户: yangkaizhang
* 日期: 2012/12/3
* 时间: 18:48
*
* 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
*/
using System;
class PubEventArgs:EventArgs
{
private readonly string m_magazineName;
private readonly DateTime m_pubDate;
public PubEventArgs(string magazineName,DateTime pubDate)
{
m_magazineName = magazineName;
m_pubDate = pubDate;
}
public string magazineName
{
get{ return m_magazineName;}
}
public DateTime pubDate
{
get{ return m_pubDate;}
}
}
class Publisher //出版社
{
public delegate void PubComputerEventHandler(object sender,PubEventArgs e);//声明事件所需要的代理 1 返回值必需为void
public delegate void PubLifeEventHandler(object sender,PubEventArgs e);
public event PubComputerEventHandler PubComputer;//事件声明 2
public event PubLifeEventHandler PubLife;
protected virtual void OnPubComputer(PubEventArgs e)
{
PubComputerEventHandler handler = PubComputer;
if (handler != null)
{
handler(this,e);
}
}
protected virtual void OnPubLife(PubEventArgs e)
{
PubLifeEventHandler handler = PubLife;
if (handler != null)
{
handler(this,e);
}
}
public void issueCoumputer(string magazineName,DateTime pubDate)//触发事件方法 3
{
Console.WriteLine("发行"+magazineName);
OnPubComputer(new PubEventArgs(magazineName,pubDate));
}
public void issueLife(string magazineName,DateTime pubDate)
{
Console.WriteLine("发行"+magazineName);
OnPubLife(new PubEventArgs(magazineName,pubDate));
}
}
class Subscriber//订阅者
{
private string name;
public Subscriber(string name)
{
this.name = name;
}
public void Receive(object sender,PubEventArgs e)//订阅者事件处理程序 4//和委托定义相一致(参数和返回类型)
{
Console.WriteLine(e.pubDate+name +"已收到"+ e.magazineName);
}
}
namespace TEvent
{
class Program
{
public static void Main(string[] args)
{
Publisher pub = new Publisher();
Subscriber zs = new Subscriber("张三");
pub.PubComputer += new Publisher.PubComputerEventHandler(zs.Receive);//向发行者订阅一个事件
Subscriber ls = new Subscriber("李四");
pub.PubComputer += new Publisher.PubComputerEventHandler(ls.Receive);
pub.PubLife += new Publisher.PubLifeEventHandler(ls.Receive);
pub.issueCoumputer("电脑杂志",Convert.ToDateTime("2006-01-01\t"));//触发事件
pub.issueLife("生活杂志",Convert.ToDateTime("2006-01-01\t"));
Console.WriteLine("一年后");
pub.PubComputer -= new Publisher.PubComputerEventHandler(ls.Receive);
pub.issueCoumputer("电脑杂志",Convert.ToDateTime("2007-01-01\t"));//触发事件
pub.issueLife("生活杂志 ",Convert.ToDateTime("2007-01-01\t"));
Console.ReadKey(true);
}
}
}
- 2012/12/3 C#事件处理机制
- C#事件处理机制
- c# 事件处理机制
- C#中的事件处理机制
- 浅析C#事件处理机制
- C#中的事件处理机制
- C#的事件处理机制
- C#的事件处理机制
- C#的事件处理机制应用
- C#的事件处理机制应用
- 关于c#中的事件处理机制
- C#的事件处理机制应用
- 浅析Visual C#事件处理机制(1)
- C#的事件处理机制应用
- C#中的预定义事件处理机制
- 浅析Visual C#事件处理机制
- 浅析Visual C#事件处理机制
- 了解c#中的事件处理机制
- hdu 1520 树型DP
- mongodb源码分析(四)查询1之mongo的查询请求
- UVA 10050
- JS实现图片跟随鼠标移动
- trie树的应用:查找hatword
- 2012/12/3 C#事件处理机制
- php source&instance(源&副本)的代码结构
- SQL Server 2005 2008 xp_cmdshell 恢复与禁用
- JS中event详解
- Python 3 日记 - 字符串(一)
- Android环境下的HelloWorld命令行C程序
- SendMessage
- java中作用域与可见性
- Facebook的朋友推荐系统