我想在将项目添加到 BindingList 之前进行一些处理。我看到有一个 ListChanged 事件,但这是在添加项目后触发的。仅当调用 AddNew 方法(而不是 Add 方法)时才会触发 AdditionalNew 事件。有没有人做过这样的事情?
更新:
我创建了以下类,当在 IList 上调用 Add 方法时,我的新 Add 方法被触发。那么,我是否有在其他地方读到的选角问题?如果我从集合中删除了 ISpecialCollection 接口,则不会调用我的 Add 方法。有人可以解释为什么它的行为不同吗?如果我使用 ISpecialCollection< 接口,我会遇到转换问题吗?
public interface ISpecialCollection<T> : IList<T>
{
}
public class SpecialCollection<T> : BindingList<T>, ISpecialCollection<T>
{
public new void Add (T item)
{
base.Add(item);
}
}
class Program
{
static void Main(string[] args)
{
IList<ItemType> list = new SpecialCollection<ItemType>();
list.Add(new ItemType());
}
}