BindingList<T>的Add方法、AddNew方法与AddingNew事件
代码示例:
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) { } } } }
运行结果:
勉強心を持てば、生活は虚しくない!