經過一段時間的研究,漸漸的感覺如果使用得當,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事件輸入等更加方便用戶操作的界面功能。