我想在C#中的List泛型類中添加一個事件,以便在添加或刪除新項目的情況下處理列表的變化項目。我創建類並從List類繼承它。由於此類的Add,Insert和Remove方法不能被覆蓋,因此我通過new關鍵字定義了新的Add,Insert和Remove方法,並調用父方法,然後引發我的事件。我用這個類作爲用戶控件中的一個屬性。在設計模式下,當我使用.net開發工作室提供的GUI更改集合時,該事件不起作用。我怎麼解決這個問題?如何在C#中添加更改事件到列表<T>類?
這裏是限定
public class SelectorItemCollection : List<SelectorItem>
{
public new void Add(SelectorItem Item)
{
//Call parent method
base.Add(Item);
//Raise changing event
this.OnCollectionChanged();
}
}
餘像這樣定義在我的用戶控件類的屬性這樣的類的例子:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public SelectorItemCollection Items { get; }
我的期望的狀態,當我更改此項目對話框中,我想從集合類中引發一個不斷變化的事件。
子類'List'很危險,因爲方法('Add'等)不是**'虛擬'。你可以從'Collection '(它們**是''virtual'')派生出來,但答案是正確的,因爲它有你想要的一切,因爲它更容易使用(或派生自)'BindingList ' 。 –
2011-12-19 09:24:05