BindingList的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)

            {

            }

        }

    }



}




运行结果:

BindingList<T>的Add方法、AddNew方法与AddingNew事件

你可能感兴趣的:(list)