⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 事件.txt

📁 学习c#语言的一本好书可以帮助初学者
💻 TXT
字号:
事件(event):在某些特定事情发生的时候通知其他对象。

为类型提供三种能力:
1.允许对象登记事件。
2.允许对象注销事件。
3.允许定义事件对象维持一个登记的集合,并在某些特定事情发生时通知这些对象。

事件模型建在委托(delegate)机制上。

1.示例

using System;
namespace Movecont
{
	class MailManager
	{
		//保存事件信息(可选)
		public class MailMsgEventArgs:EventArgs
		{
			public MailMsgEventArgs(String from,String to,String Subject,String body)
			{
				this.from=from;
				this.to=to;
				this.subject=subject;
				this.body=body;
			}
			public readonly String from,to,subject,body;
		}
		//方法原型(可选)
		public delegate void MailMsgEventHandler(Object sender,MailMsgEventArgs args);
		//事件成员(自动维护订阅对象)
		public event MailMsgEventHandler MailMsg;
		//通知对象
		protected virtual void OnMailMsg(MailMsgEventArgs e)
		{
			if(MailMsg!=null)
				MailMsg(this,e);
		}
		//输入转化为事件
		public void SimulateArrivingMsg(String from,String to,String subject,String body)
		{
			MailMsgEventArgs e=new MailMsgEventArgs(from,to,subject,body);
			OnMailMsg(e);
		}
	}

	class Fax
	{
		//订阅事件
		public Fax(MailManager mm)
		{
			//(使用了事件,委托,回调方法)
			mm.MailMsg+=new MailManager.MailMsgEventHandler(FaxMsg);
		}
		//回调方法
		private void FaxMsg(Object sender,MailManager.MailMsgEventArgs e)
		{
			Console.WriteLine("Faxing mail message:");
			Console.WriteLine("From:{0}\n To:{1}\n Subject:{2}\n Body:{3}\n",e.from,e.to,e.subject,e.body);
		}
		//注销事件
		public void Unregister(MailManager mm)
		{
			MailManager.MailMsgEventHandler callback=new MailManager.MailMsgEventHandler(FaxMsg);
			mm.MailMsg-=callback;
		}
	}
}

using System;
using System.Collections;
namespace Movecont
{
	/// <summary>
	/// 事件。
	/// </summary>
	class Class1
	{
		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			MailManager mymail=new MailManager();
			Fax myfax=new Fax(mymail);
			mymail.SimulateArrivingMsg("gelifeng","chi","Hi,beibei","Best regard!");

		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -