代码示例:
using System;
using System.ComponentModel;
namespace Test
{
class Program
{
static void Main()
{
var list = new BindingList<Item>();
list.AddingNew += (s, e) =>
{
//使用BindingList<T>.AddNew方法加入自定义新项时得在这里加,否则会调用T的默认构造方法自动创建一个。
e.NewObject = new Item(0);
Console.WriteLine("AddingNew");
};
list.ListChanged += (s, e) =>
{
Console.WriteLine("ListChanged:" + e.ListChangedType);
};
//只有BindingList<T>.AddNew方法才会触发AddingNew事件,同时配置BindingList<T>.AddNew(丢弃新增项)与BindingList<T>.EndNew方法(提交新增项)
{
var item = list.AddNew();
var index = list.IndexOf(item);
Console.WriteLine("count of list: " + list.Count);//结果为:1
list.CancelNew(index);
Console.WriteLine("count of list: " + list.Count);//结果为:0
list.EndNew(index);
Console.WriteLine("count of list: " + list.Count);//结果为:0
}
//BindingList<T>也实现了Collection<T>接口,Collection<T>.Add与Insert 方法只会引发ListChanged事件
{
var item = new Item(0);
list.Add(item);
}
Console.WriteLine("count of list: " + list.Count);//结果为:1
Console.ReadKey();
}
class Item
{
public Item(int a)
{
}
}
}
}
运行结果: