`
窗户纸
  • 浏览: 18507 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics