Thursday, December 12, 2013

Implementing .Net ArrayList with Changed event

Sometimes we need a List which can notify user when an item is added. Here is the way that you can implement a generic ArrayList which notifies user at the time of an element is added.

using System;
using System.Collections;
namespace ArchiveData.Logging
{
  // A delegate type for hooking up change notifications.
  public delegate void ChangedEventHandler(object sender, EventArgs e);
  public class ListWithChangedEvent : ArrayList
  {
    // An event that clients can use to be notified whenever the
    // elements of the list change.
    public event ChangedEventHandler Changed;
    public object NewlyAddedItem { getset; }
    // Invoke the Changed event; called whenever list changes
    protected virtual void OnChanged(EventArgs e)
    {
      if (Changed != null)
        Changed(this, e);
    }
    // Override some of the methods that can change the list;
    // invoke event after each
    public override int Add(object value)
    {
      NewlyAddedItem = value;
      var 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);
      }
    }
  }
}


I got this from MSDN. I feel that it would be helpful to you all too.

Enjoy!

No comments:

Post a Comment