using System.Collections;
public static void Main()
ListWithChangedEvent list = new ListWithChangedEvent();
EventListener listener = new EventListener(list);
public delegate void ChangedEventHandler(object sender, EventArgs e);
public class ListWithChangedEvent : ArrayList
public event ChangedEventHandler Changed;
protected virtual void OnChanged(EventArgs e)
public override int Add(object value)
OnChanged(EventArgs.Empty);
public override void Clear()
OnChanged(EventArgs.Empty);
public override object this[int index]
OnChanged(EventArgs.Empty);
private ListWithChangedEvent List;
public EventListener(ListWithChangedEvent list)
List.Changed += new ChangedEventHandler(ListChanged);
private void ListChanged(object sender, EventArgs e)
Console.WriteLine("This is called when the event fires.");
List.Changed -= new ChangedEventHandler(ListChanged);