BindingList,还是很美的

经过一段时间的研究,渐渐的感觉如果使用得当,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事件输入等更加方便用户操作的界面功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章