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事件

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-20
猜你喜欢
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2021-09-27
  • 2021-11-23
相关资源
相似解决方案