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事件輸入等更加方便用戶操作的界面功能。

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