如何實現事件
回答
List<T>
沒有通知支持。你可以看看BindingList<T>
,它有事件 - 或Collection<T>
,它可以通過覆蓋方法繼承。
如果你想暴露在Foo
水平時,或許有點像下面 - 但它可能更容易離開就行了:
class Foo{
public event EventHandler ListChanged;
private readonly BindingList<string> list;
public Foo() {
list = new BindingList<string>();
list.ListChanged += list_ListChanged;
}
void list_ListChanged(object sender, ListChangedEventArgs e) {
EventHandler handler = ListChanged;
if (handler != null) handler(this, EventArgs.Empty);
}
public IList<string> SomeCollection {get {return list;}}
}
你可以看看this tutorial製作自己的自定義事件。
您可以通過使用ObservableCollection而不是List來做到這一點。
看看(分別在System.ComponentModel
和System.Collections.ObjectModel
命名空間)的BindingList
和ObservableCollection
類 - 無論是一個人應該爲你做的工作做好。
請注意,這兩個類通常提供相同的功能,但它們確實有點不同。 BindingList
通常更適合數據綁定/ UI目的(因此它的名稱),因爲它允許選項取消更新等。然而,ObservableCollection
可能更適合您的情況,因爲您只是希望收到變更通知(看起來),並且該類純粹是從這個角度設計的。它們存在於非常不同的命名空間中的事實對此有所提示。如果您需要關於相似性和差異的確切細節,我建議您檢查鏈接的MSDN文檔。
(回答進行評論;還 - 是不是在3.0的ObservableCollection
MSDN似乎暗示ObservableCollection自.NET 2.0以來一直存在。在功能方面,你說BindingList提供ObservableCollection所做的一切(以及更多)基本上是正確的。但有一點需要注意的是,ObservableCollection實現了INotifyCollectionChanged和INotifyPropertyChanged,在某些情況下這很有用。我也相信WPF在少數情況下需要ObservableCollection。正如我指出的那樣,預期用法也略有不同,儘管這是一件小事。 – Noldorin 2009-06-26 22:37:38
基本一...
這裏是一個很好的link
public class Foo
{
private List<string> _SomeCollection;
public event EventHandler Added;
public void Add(string item)
{
SomCollection.Add(item);
OnAdd();
}
private void OnAdd()
{
if (Added != null)
{
Added.Invoke(this, EventArgs.Empty);
}
}
}
- 1. 如何實現OnTouch事件
- 2. 如何實現自定義事件?
- 3. 如何在iPad上實現dblclick事件
- 4. 如何實現TFileListBox的OnSelectionChanged事件?
- 5. 如何實現事件隊列?
- 6. 如何實現事件在PHP
- 7. 如何實現TFrame的OnResizeEnd事件?
- 8. MySQL如何實現事務
- 9. VB6實現與事件
- 10. 定期事件實現
- 11. 實現Core Audio API事件
- 12. 如何在CustomLabel控件中實現點擊事件?
- 13. 如何實施事件
- 14. Oracle。如何實現嵌套事務
- 15. 如何在C#中實現抽象事件或接口方法事件?
- 16. 如果事後發現事實,Datomic如何?
- 17. 如何在GreaseMonkey腳本中實現「DOM Ready」事件?
- 18. 事件驅動編程是如何實現的?
- 19. 我將如何去實現基於事件的異步模式?
- 20. 如何爲ASP.NET Web應用程序實現事件記錄器?
- 21. 如何實現AlertDialog.Builder選定的項目點擊事件?
- 22. 如何用普通的javascript實現iOS的觸摸事件?
- 23. 如何在Android中實現事件和委託概念?
- 24. 對象事件,它們是如何實現的
- 25. 如何在uiwebview中實現事件處理?
- 26. 如何在python中實現時間事件調度器?
- 27. 如何實現下拉列表改變事件捕捉功能
- 28. 如何實現OnClick事件來調用$ .getJSON函數
- 29. 如何在PHP中實現事件驅動的代碼?
- 30. 如何在ViewPager中實現滑動事件以查看Flipper?
當ObservableCollection非常好地完成這項工作時,我沒有看到創建自定義Collection類的要點。 – Noldorin 2009-06-26 22:08:45