插入事件
OnInsert
删除事件
OnDelete
public class PList<T> : List<T> where T : new()
{
/// <summary>
/// 删除事件
/// </summary>
public event EventHandler<NListEventArgs<T>> OnDelete = null;
/// <summary>
/// 添加事件
/// </summary>
public event EventHandler<NListEventArgs<T>> OnInsert = null;
public new void Add(T item)
{
base.Add(item);
if (OnInsert != null)
{
OnInsert.Invoke(this, new NListEventArgs<T>(item, this.Count));
}
}
public new void Insert(int index, T item)
{
base.Insert(index, item);
if (OnInsert != null)
{
OnInsert.Invoke(this, new NListEventArgs<T>(item, index));
}
}
public new void Remove(T item)
{
Int32 index = base.IndexOf(item);
base.Remove(item);
if (OnDelete != null)
{
OnDelete.Invoke(this, new NListEventArgs<T>(item, index));
}
}
public new void RemoveAt(Int32 index)
{
T item = base[index];
base.RemoveAt(index);
if (OnDelete != null)
{
OnDelete.Invoke(this, new NListEventArgs<T>(item, index));
}
}
public new void RemoveRange(int index, int count)
{
for (int i = index; i < index + count ; i++)
{
this.RemoveAt(i);
}
}
public new void AddRange(IEnumerable<T> collection)
{
Int32 Index = base.Count;
base.AddRange(collection);
foreach (var item in collection)
{
if (OnInsert != null)
{
OnInsert.Invoke(this, new NListEventArgs<T>(item, Index));
}
Index++;
}
}
public new void InsertRange(int index, IEnumerable<T> collection)
{
base.InsertRange(index, collection);
foreach (var item in collection)
{
if (OnInsert != null)
{
OnInsert.Invoke(this, new NListEventArgs<T>(item, index));
}
index++;
}
}
}
public class NListEventArgs<T> : EventArgs
{
public NListEventArgs(T item, Int32 index)
{
Item = item;
Index = index;
}
public T Item { get; set; }
public Int32 Index { get; set; }
}