moo*_*ara 1 c# events inheritance user-controls
我想在C#中向List泛型类添加一个事件,以便在添加或删除新项时处理更改列表项.我创建类并从List类继承它.由于添加,插入,删除和本类的方法不能被推翻,我定义新的添加,插入,删除,并通过新的关键字方法和调用父类的方法,然后提出我的事件.我使用此类作为用户控件中的属性.在设计模式下,当我在.net开发工作室中使用提供的GUI更改集合时,该事件不起作用.我怎么解决这个问题?
这是定义这样一个类的一个例子
public class SelectorItemCollection : List<SelectorItem>
{
public new void Add(SelectorItem Item)
{
//Call parent method
base.Add(Item);
//Raise changing event
this.OnCollectionChanged();
}
}
Run Code Online (Sandbox Code Playgroud)
我在我的用户控件类中定义了一个属性,如下所示:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public SelectorItemCollection Items { get; }
Run Code Online (Sandbox Code Playgroud)
我希望在我更改此对话框中的项目时,我想从集合类中引发更改事件.

Tho*_*que 14
不要重新发明轮子,使用已经支持此类通知的集合类,ObservableCollection<T>或者BindingList<T>(如果您在WPF中使用数据绑定,请使用前者;在Windows窗体中,使用后者).
如果你想实现自己的,不要继承List<T>,因为它不是为继承而设计的.相反,您可以将其Collection<T>用作基类.