BindingList,还是很美的

    技术2022-05-19  24

    经过一段时间的研究,渐渐的感觉如果使用得当,bindinglist还是很有用的,其中同步的方式两种都可以:

       方式1: 在界面层使用 datagridview.Refresh()方法。

       方式2: 在对象层使用BindingList.ResetBinding()方法。

     

     另外,如果需要处理删除对象的事情,可以重写bindingList的RemoveItem()方法, 比如有一个类为:

        public class Class1    {        string _Name;

            public string Name        {            get { return _Name; }            set { _Name = value; }        }        int Weight;

            public int Weight1        {            get { return Weight; }            set { Weight = value; }        }        public Class1 Class1        {            get            {                return This;            }        }

        }

     

    可以建立如下类:

        public class MyBindlingClass1 : BindingList<Class1>    {        protected override void RemoveItem(int index)        {            //做些事情            base.RemoveItem(index);        }    }

    如果将该类嵌入到Class1中,这个子类还可直接调Class1中的内容,利用这种方式,我们可以进行删除后的重新排序,记录删除对象已被保存集合时的处理等等很多事情。

     

      由于对象中的BindingList.ResetBindings()方法会重写列表组件,因此我们可以利用这个特性实现取消输入处理,

      如在Class1中添加一个属性Cancel, 当界面层设置为Name的同时设置了Cancel=true时, 在Name.Set方法中,发现该信号,则取消写入_Name, 并刷新列表,则可以实现取消数据操作的功能。

      另外,结合BindlingList,还可实现在列表控件实现下拉菜单输入,通过CellClick事件输入等更加方便用户操作的界面功能。


    最新回复(0)