不使用 BindingSource 作为控件和基础数据源的中间层也行,但是 BindingSource 在很多时候非常有价值,这里只展示了一个很小的方面。
1. ListControl.DataSource 属性
获取或设置此 ListControl 的数据源。实现 IList 或 IListSource 接口的对象可以作为数据源,如 DataSet 或 Array。
假设现在有两个对象:List<T> 的 mylist,ListBox 类型的 listBox1。下面这条语句可以使 mylist 的内容显示到 listBox1 中(方法一):
listBox1.DataSource = mylist;
2. BindingSource 类
封装窗体的数据源。BindingSoiurce 实现的接口有:Component, IBindingListView, IBindingList, IList, ICollection, IEnumerable, ITypedList, ICancelAddNew, ISupportInitializeNotification, ISupportInitialize, ICurrencyManagerProvider。
假设现在还有一个 BindingSource 对象 bsrc ,下面的语句也可以使 mylist 的内容显示到 listBox1 中(方法二):
bsrc = new BindingSource(mylist, null);
listBox1.DataSource = bsrc;
3. 为什么需要 BindingSource ?
先看看 BindingSource 除了让控件知道从哪儿读取数据,还能做什么:
它通过提供一个间接寻址层、当前项管理、更改通知和其他服务简化了窗体中控件到数据的绑定。这是通过将 BindingSource 组件附加到数据源然后将窗体中的控件绑定到 BindingSource 组件来实现的。与数据的所有进一步交互,包括定位、排序、筛选和更新,都通过调用 BindingSource 组件实现。
值得注意的最后一句话,我在《对象引用的保护措施》中提出的“包装类”方案就是想让包装类做到这样。
总之,BindingSource 可以监视(直观地说是“监视”,本质上是“代理”)数据源的变化。在上面的方法一中,listBox1 不能跟踪 mylist 的变化,比如由这条语句引起的数据变更:
mylist.RemoveAt(3);
如果要让 listBox1 反应 mylist 的最新情况,需要:
listBox1.DataSource = null;
listBox1.DataSource = mylist;
或其它可以使 listBox1 与 mylist "从头开始"的语句
分享到:
相关推荐
下面的代码示例演示如何使用 BindingSource 组件,将三个控件(两个文本框控件和一个 DataGridView 控件)绑定到 DataSet 中的同一列。 该示例演示如何处理 BindingComplete 事件,并确保当一个文本框的文本值更改时...
使用 Windows 窗体 BindingSource 自定义项添加,From MSDN
通过BindingSource实现DataSet、DataGridView和TextBox的数据同步更新.docx
BindingSource组件是数据源和控件间的一座桥,同时提供了大量的API和Event供我们使用。使用这些API我们可以将Code与各种具体类型数据源进行解耦;使用这些Event我们可以洞察数据的变化。...
数据绑定-绑定列表,BindingSource和BusinessObjects
Binding.zip 数据绑定案例
在winform下使用BindingSource分页2
以BindingSource的程式,基本的資料匯入、過濾排序資料、重新繫結或找尋某筆資料等功能,如果再修改一下可以成為會員資料管理的一個介面
DataGridView的常见操作源码,包含数据源绑定,添加删除修改选中单元格删除修改等等
Android数据绑定的一个Demo程序,包括数据绑定和事件绑定
主要介绍了WinForm之BindingSource基础操作,对BindingSource组建的用法进行较为深入的实例分析,需要的朋友可以参考下
c#使用bindlist绑定datagridview不能自动排序的解决类
Binding.scala 是 Scala 上的数据绑定框架,既可以运行在 JVM 上,也可以通过 Scala.js 编译成 JavaScript 运行在 Node.js 或者浏览器中。Binding.scala 也是一套动态页面开发框架,使你可以直接在代码中内嵌 ...
代码内包含了DataGrdiView控件如何创建Combox列,并给Combox列绑定数据源,以及数据源后台所对应的值
2.2.1 .NET Framework类 ............... 23 2.2.2 执行代码 ................................ 24 2.3 公共语言运行时 ........................ 25 2.3.1 载入并执行代码 .................... 25 ...
以下是Android Architecture Components的优势: ...Android Architecture Components中的Data Binding库可以帮助开发者将数据绑定到UI控件上,以减少手动设置UI控件的代码量,提高开发效率。 5. 易于学习和使用
Binding 数据绑定
数据绑定-搜索和排序BindingList。
C# WINFORM 控件双向绑定少为人知的秘密 在做winform开发的时候常常会遇到控件绑定数据源来实现双向绑定更新的问题。 根据这么多年的经验现在整理一下供大家参考,有什么写错的地方请指教