首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

事件的应用 代码示例

2012-11-18 
事件的使用 代码示例?摘自:C#程序设计教程 朱毅华 第134页?using Systemusing System.Collections.Generi

事件的使用 代码示例

?

摘自:C#程序设计教程 朱毅华 第134页

?

using System;
using System.Collections.Generic;
using System.Text;

namespace t_Event
{

??? //--定义事件包含数据

??? class MyEventArgs : EventArgs
??? {
??????? private string strText;

??????? public MyEventArgs(string StrText)? //--构造函数
??????? {
??????????? this.strText = StrText;

??????? }

??????? public string StrText
??????? {
??????????? get { return strText; }
??????????? set { strText = value; }
??????? }

??? }

??? //--发布事件的类
??? class EventSource
??? {
??????? MyEventArgs EvArgs = new MyEventArgs("发布事件");

??????? //定义委托
??????? public delegate void EventHandler(object from, MyEventArgs e);

??????? //定义事件
??????? public event EventHandler TextOut;

??????? //--激活事件的方法
??????? public void TriggerEvent()
??????? {
??????????? if (TextOut != null)? //--不为空,表示有用户订阅
??????????? {
??????????????? TextOut(this, EvArgs);
??????????? }
??????? }
?

??? }

??? //--订阅事件的类
??? class TestApp
??? {
??????? //--处理事件的静态方法
??????? public static void CatchEvent(object from, MyEventArgs e)
??????? {
??????????? Console.WriteLine("调用方法CatchEvent");
??????????? Console.WriteLine("CatchEvent:{0}",e.StrText);
??????? }

??????? //处理事件的方法
??????? public void InstanceCatch(object from, MyEventArgs e)
??????? {
??????????? Console.WriteLine("调用方法InstanceCatch");
??????????? Console.WriteLine("InstanceEvent:{0}", e.StrText);
??????? }

??????? static void Main(string[] args)
??????? {

??????????? EventSource evsrc = new EventSource();

??????????? //订阅事件
??????????? evsrc.TextOut += new EventSource.EventHandler(CatchEvent);

??????????? evsrc.TriggerEvent();

??????????? Console.WriteLine("1 -------------------------");

??????????? //取消事件
??????????? evsrc.TextOut -= new EventSource.EventHandler(CatchEvent);

??????????? evsrc.TriggerEvent();
??????????? Console.WriteLine("取消事件后,这次什么都没做");
??????????? Console.WriteLine("2 -------------------------");

??????????? TestApp theApp = new TestApp();
??????????? evsrc.TextOut += new EventSource.EventHandler(theApp.InstanceCatch);

??????????? evsrc.TriggerEvent();

??????????? Console.WriteLine("3 -------------------------");

??????????? Console.ReadKey();
???????
??????? }

??? }


}

热点排行