class1.cs

来自「c#网络编程及应用-刘瑞新」· CS 代码 · 共 69 行

CS
69
字号
using System;
namespace MyCollections 
{
	using System.Collections;
	public delegate void ChangedEventHandler(object sender, EventArgs e);
	public class ListWithChangedEvent: ArrayList 
	{
		public event ChangedEventHandler Changed;
		protected virtual void OnChanged(EventArgs e) 
		{
			if (Changed != null)
				Changed(this, e);
		}
		public override int Add(object value) 
		{
			int i = base.Add(value);
			OnChanged(EventArgs.Empty);
			return i;
		}
		public override void Clear() 
		{
			base.Clear();
			OnChanged(EventArgs.Empty);
		}
		public override object this[int index] 
		{
			set 
			{
				base[index] = value;
				OnChanged(EventArgs.Empty);
			}
		}
	}
}
namespace TestEvents 
{
	using MyCollections;
	class EventListener 
	{
		private ListWithChangedEvent List;
		public EventListener(ListWithChangedEvent list) 
		{
			List = list;
			List.Changed += new ChangedEventHandler(ListChanged);
		}
		private void ListChanged(object sender, EventArgs e) 
		{
			Console.WriteLine("开始让我处理了!");
		}
		public void Detach() 
		{
			List.Changed -= new ChangedEventHandler(ListChanged);
			List = null;
		}
	}
	class Test 
	{
		public static void Main() 
		{
			ListWithChangedEvent list = new ListWithChangedEvent();
			EventListener listener = new EventListener(list);
			list.Add("item 1");
			list.Clear();
			listener.Detach();
			Console.Read();
		}
	}
}

⌨️ 快捷键说明

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