我试图在我定义的ArrayList上执行RemoveAt(i)方法时触发进程。 可以这样做吗?怎么样?
谢谢,
阿萨夫。
答案 0 :(得分:2)
使用ObservableCollection而不是ArrayList怎么样?它随WPF一起提供,但我相信如果你使用.net 3.5,你可以毫无问题地使用它。 ObservableCollection实现了INotifyCollectionChanged,因此您可以访问CollectionChanged事件。
编辑:您还可以创建自己的集合,实现ICollection和IEnumerable,将ArrayList添加为字段并围绕您自己的Add和Remove方法引发事件。查看the solution provided by this guy。
以下是关于如何实现目标的摘要:
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...
}
答案 1 :(得分:0)
您需要子类化数组列表并覆盖该方法才能使其正常工作。在.Net 3.5中有一个“ObservableCollection”类,它实现了一个CollectionChanged事件,如果不限制使用ArrayList,可以使用该事件。 ObservableCollection还实现了ICollection和IEnumerable,因此你应该可以将它交换为ArrayList。