1
A
回答
2
那麼用ObservableCollection代替ArrayList呢?它附帶WPF,但我相信如果您使用.net 3.5,則可以毫無問題地使用它。 ObservableCollection實現了INotifyCollectionChanged,因此您可以訪問CollectionChanged事件。您還可以創建自己的集合,實現ICollection和IEnumerable,將ArrayList添加爲字段並在您自己的添加和刪除方法中引發事件。檢出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...
}
0
你會需要繼承數組列表和覆蓋的方法,爲了這個工作。在.Net 3.5中,有一個「ObservableCollection」類,它實現了一個CollectionChanged事件,如果您不限制使用ArrayList,則可以使用該事件。 ObservableCollection還實現了ICollection和IEnumerable,因此您應該可以將它交換爲ArrayList。
+0
我嘗試了子類化和重寫,但後來因爲RemoveAt是一個'組方法'而出現錯誤... – Asaf
相關問題
- 1. 關聯JSON數組元素與事件處理程序
- 2. 何時將事件與方法關聯?
- 3. 如何關閉事件處理程序?
- 4. 事件處理程序與Flex中的DataGrid行相關聯
- 5. Visual C# - 使用CellDoubleClick事件關聯事件處理程序
- 6. HTML事件處理程序與React事件處理程序
- 7. 如何只定位與on(更改)事件處理程序關聯的類?
- 8. 將按鍵事件與文本框數組中的事件處理程序關聯
- 9. 如何將事件處理程序分配給proto.io開關?
- 10. 關於(內聯)javascript事件處理程序執行jquery事件處理程序的順序
- 11. 如何將事件與對象關聯?
- 12. React組件事件處理程序 - 無法訪問事件
- 13. 如何使用sinon.js來模擬事件處理程序方法?
- 14. 如何從事件處理程序調用公共方法
- 15. 掛鉤異步方法事件處理程序與ASMX
- 16. Swing組件事件處理程序
- 17. 將文件擴展名與程序關聯的最佳方法
- 18. 關閉事件處理程序C#
- 19. Form OnClick事件處理程序 - 如何重疊其他事件處理程序?
- 20. C#靜態事件處理程序與非靜態事件處理程序
- 21. 組織事件處理方法
- 22. 關聯數組作爲FO事件處理程序的對象使用數據
- 23. 如何編寫內聯事件處理程序?
- 24. 如何在事件發生時斷開,或確定關聯的處理程序?
- 25. jQuery事件處理程序組織
- 26. 如何將一個事件處理程序作爲方法參數傳遞?
- 27. 方法組織事件處理與軟件複雜性增加
- 28. 將事件和委託事件處理程序傳遞到泛型Helper方法
- 29. 如何釋放事件處理程序
- 30. 如何同步事件處理程序
我編輯了我的答案,包括一個例子。如果你不希望使用ObservableCollection所帶來的一切,我認爲這是一個更好的方法。 –