在System.Windows.Forms命名空间中有很多相关的类,例如类BindingContext、CurrencyManager和PropertyManager。当把数据绑定到窗体上的一个或多个控件上时,上述类能够相互交互。在C#内常用的数据绑定对象有Binding、BindingContext、BindingManagerBase、PropertyManager、CurrencyManager、BindingsCollection和ControlsBindingsCollection。
在18.3.1节中使用了TextBox控件的DataBindings属性,能够把DataSet的一列数据绑定到控件的Text属性上。属性DataBindings是ControlsBindingsCollection的一个实例:
通过上述代码,为ControlBindingsCollection添加了一个Binding对象。
1.BindingContext
所有Windows窗体都有BindingContext属性,此属性是在Control中定义的,所以几乎所有的控件都有这个属性。BindingContext对象有一个BindingManagerBase实例集合,当对控件进行数据绑定时,就会创建这些实例,并把它们添加到绑定管理器对象中。
BindingContext可以包含几个数据源,并包装在CurrencyManager或PropertyManager中。具体使用哪个类,是由数据源本身所决定的。
如果数据源包含一个项目列表,例如DataTable或DataView的对象,就使用CurrencyManager。因为CurrencyManager可以在该数据源中保存当前位置。如果数据源只返回一个值,就把PropertyManager存储在BindingContext中。
只为给定的数据源创建一次CurrencyManager或PropertyManager。如果把两个文本框绑定到DataTable的一个行上,则在BindingContext中只创建一个CurrencyManager。
添加到窗体中的每个控件都链接到窗体的绑定管理器上,因此所有的控件都共享相同的实例。在最初创建一个控件时,其BindingContext属性为空。在把控件添加到窗体的Controls集合中时,就把BindingContext设置为该窗体的Controls集合。
要把控件绑定到一个列上,需要为其DataBindings属性添加一个入口。例如,通过下面的代码可以创建一个新的绑定:
在上述代码中,使用了ControlBindingsCollection的Add()方法,此方法会在传递给它的参数中创建Binding对象的一个实例,并把它添加到绑定集合中。绑定把控件链接到数据源上,存储在Form(或控件本身)的BindingContext中。数据源内部的改变会反映到控件上,控件中的改变也会反映到数据源上。
2.Binding类
Binding类的功能是,将控件的一个属性链接到数据源的一个成员上。当改变该成员时,控件的属性会随之更新,以反映这个改变的变化。反之亦然,如果文本框中的文本被更新,这个改变也会反映到数据源上。
可以把任何列绑定到控件的任何属性上。例如,可以把列绑定到一个文本框中,可以把另一个列绑定到文本框的颜色上,也可以把控件的属性绑定到完全不同的数据源上。
实例89:使用数据绑定
下面将通过一个简单实例来说明数据绑定的实现流程。本实例代码保存在“光盘:\daima\17”文件夹内,项目名为bangding。功能是通过绑定将数据显示在窗体控件内,并实现对绑定数据源的操作处理,本实例的实现步骤如下。
1)在Visual Studio 2010中新建一个Windows应用程序,如图18-23所示。
图18-23 新建项目
2)建立和数据库Northwind的连接,如图18-24所示。
3)添加数据库Northwind的应用程序的数据源,如图18-25所示。
图18-24 建立数据库连接
图18-25 建立应用程序数据源
4)将“数据源”中表Customers的CustomersID列拖入到Form1窗体中,然后将customerIDLabel的Text属性设置为“编号ID:”,如图18-26所示。
5)经过步骤4)的操作后,控件customerIDTextBox的Text属性将自动绑定数据源CustomersID的值,并在属性中显示提示图标“”。
6)按照步骤4)将表Customers的CustomersID列CompanyName和ContactName拖入到Form1窗体中,并分别设置对应的Text属性,如图18-27所示。
图18-26 绑定一个列
图18-27 绑定三个列
7)经过上述操作后,会在Form1窗体顶部自动生成一个处理工具栏。通过工具栏里的标签可以实现对数据的操作,如图18-28所示。(www.xing528.com)
图18-28 自动生成的处理工具栏
8)从Visual Studio 2010“工具箱”中拖入到Form1中一个DataGridView控件,并调整控件的大小,如图18-29所示。
9)从Visual Studio 2010“数据源”中将表Customers拖入到DataGridView控件中,并只保留其中的前三列,如图18-30所示。
图18-29 添加DataGridView
图18-30 插入数据源数据
10)在Visual Studio 2010“属性”中单击ColumnHeadersBorderStyle,设置DataGridView的显示样式,如图18-31所示。
图18-31 设置DataGridView样式
11)单击“确定”按钮后完成整个项目实例,执行后将在窗体内显示对链接数据源的操作表单和工具栏标签,如图18-32所示。
图18-32 窗体最终执行效果
图18-33 添加数据表单
通过单击工具栏中对应的操作图标,可以管理数据库内的数据。例如,单击添加图标则可以向库内添加新的数据,单击删除图标则删除选定的数据,单击保存图标后将更新后的数据保存,单击添加图标后将自动把上方三行表单数据清空,供用户输入新的添加数据,如图18-33所示。
1.数据库连接文件
数据库连接文件app.config的功能不言而喻,具体代码如下:
2.窗体文件
窗体文件Form1.cs用于定义窗体类和实例函数,并分别设置载入执行事件和单击事件,并设置工具栏图标的事件处理程序,主要代码如下:
3.控件属性设置文件
控件属性设置文件Form1.Designer.cs的功能是,设置窗体内各控件的属性,并设置工具栏的对应处理代码,主要实现代码如下:
多学一招
数据绑定是C#项目的核心,但是有了Visual Studio 2010后,整个开发过程将变得十分简单。从整个实例项目的实现流程就可以看出,使用Visual Studio 2010可以轻松地实现对指定数据源的绑定处理。并且自动生成数据源操作事件和图标,使整个项目的开发过程变得十分轻松。并且微软还提供了大量的第三方技术支持,使开发人员可以很快上手。在此鼓励读者尽量使用Visual Studio 2010的集成开发环境,使自己尽快步入Visual Studio 2010开发和C#开发的高手之列。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。