I am trying to trigger a process when a RemoveAt(i) method is performed on an ArrayList I have defined. Can this be done? How?
Thanks,
Asaf.
I am trying to trigger a process when a RemoveAt(i) method is performed on an ArrayList I have defined. Can this be done? How?
Thanks,
Asaf.
What about using ObservableCollection instead an ArrayList? It shipped with WPF but I believe you can use it without problems if you're using .net 3.5. ObservableCollection implements INotifyCollectionChanged, so you can have access to the CollectionChanged event.
Edit: You can also create your own collection, implementing ICollection and IEnumerable, adding an ArrayList as a field and raising events around your own Add and Remove methods. Check out the solution provided by this guy.
Here's a snippet on how you can achieve what you want:
public class MyArrayList : IList, ICollection, IEnumerable, ICloneable
{
private ArrayList arrayList = new ArrayList();
public event System.EventHandler RemovedItem;
public void RemoveAt(int index)
{
this.arrayList.RemoveAt(item);
if (RemovedItem != null) {
RemovedItem(this, new EventArgs());
}
}
// implement required interface members...
}
You would need to subclass array list and override the method in order for this to work. In .Net 3.5 there is an "ObservableCollection" class which implements a CollectionChanged event which you could use if you aren't constrained to using ArrayList. ObservableCollection also implements ICollection and IEnumerable so you should be able to swap it out for ArrayList.