欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Winform BindingList使用注意事项

程序员文章站 2022-06-07 13:17:40
...

Winform 使用BindingList


经过探索,winform中控件继承ListControl,如Listbox、Combox、datagridview等如需使用绑定数据源的形式,

var Lbx=new ListBox();//ListControl派生控件
var list=new BindingList<T>();//T为实际数据类型
Lbx.DataSource = list;
Lbx.DisplayMember = "PropertyName";//需要显示的属性名称

然后在需要操作list的时候直接操作即可 add,remove等,以下为需要注意的地方:

  1. 如果控件为listbox,T为基础类型如int,此时操作list增删操作不刷新控件,临时解决方案是将基础类型再封装一层自定义类型,以便设置DisplayMember,其他Combox等不受影响;
  2. 在遇到线程中操作list的时候,一定要正确操作,即此时从线程中改变绑定源,如需更新界面,需要使用Lbx的Invoke()或者BeginInvoke()方法进一步封装,此原理类似于WPF更新机制;
private void OnReceivedMsg(T msg)//线程回调方法
{
	Lbx.Invoke(()=>list.Add(msg));//直接使用list.Add(msg),控件不会刷新,此时也不会报错
}
相关标签: Binding