上一篇中,我介绍了大致介绍了一下数据绑定实现的原理和见识了一下简单绑定。继续介绍,简单绑定还没完全说清楚。Binding对象是简单绑定中比较重要的一个类。Binding创建和维护某控件的属性与某对象的属性或对象列表中当前对象的属性之间的简单绑定。这是MSDN上的描述。上一篇中你们认识到了,绑定其实就是控件属性和对象数据之间的关联。在MSDN的描述中也说明了这一点。
我们可以建立一个Binding对象来表示这个关联,一下的代码你们已经见到过了.
我已经大概解释了Binding的构造函数中每个参数的含义。 现在具体来说明一下。
第一参数:你要指定一个你控件的属性(如:Text, Background, ForeColor等).
第二参数:你要指定任意一个类的实例最为数据源。可能的数据源包括:
任意对象和一下列举的对象。
|
说明 |
C# 示例 |
|---|---|
|
实现 或 的任何类。包括:、DataTable、 或 。 |
DataSet ds = new DataSet("myDataSet");
|
|
实现 以创建对象索引集合的任意类。必须在创建 Binding 之前创建和填充该集合。列表中的所有对象必须为同一类型;否则将引发异常。 |
ArrayList ar1 = new ArrayList;
Customer1 cust1 = new Customer("Louis");
ar1.Add(cust1);
|
|
强类型对象的强类型 IList。 |
Customer [] custList = new Customer[3]; |
以上是MSDN中列举的。
第三参数:需要指定的绑定表达式。(在前一文章中的例子中就是一个简单的属性的名称)。但并不是总是这样。我们可以考虑这样的一个例子。
比如我们又一个Employee类并且它拥有个一属性是City(表示所在的城市),而这个属性是一个City类型。City类中有一个属性是Name表示城市的名称。
在这种情况中。如果你想把Employee类的某个实例的City属性的城市名称绑定到一个TextBox中的话。我们就需要这样做:
2
1.建立City类
2
3
4
5
6
2.建立Employee类
2
3
4
5
6
请注意31行,我声明了一个City属性,它是一个City类型。
Form1.CS
2
3
4
5
6
7
8
9
10
我已经在代码做了说明。你可以自己看看。上面我重点的简介了一下数据绑定表达是的作用。接下来我们去更深入的认识一下Binding的作用。
如果你们留意了的话,你会发现你如果你的属性即使不是字符串类型一样可以很好的绑定到TextBox的Text。数据绑定在这里又发功,它负责将类型进行了转换。不过只有一些基本类型能够进行转换。如果你需要将二进制数据转换成Image类型,那你就的处理Binding类中的两个事件。Format和Parse事件。我们通常使用这两个事件来进行数据的转换。
Format 事件:当数据被绑定到控件的时候触发。就是在数据要显示到控件中的时候。
Parse 事件:当控件的属性发生改变而导致要更新数据源的时候触发。
这两个事件是相对的,分别管理这从数据源到控件和控件到数据源的两个过程的数据格式转换的问题。
看例子:
我把上面的例子做个修改:
2
3
4
5
6
7
8
9
10
从表现上看,和第一个例子没有什么区别,但实际实现的方式是不同的。请注意第21行和第一个例子中的21行是不同。
第一个例子
this.textBox3.DataBindings.Add("Text", employee, "City.Name", true);
第二个例子
Binding cityBinding = new Binding("Text", employee, "City");
//你可以屏蔽一下的两句话来看看Text中到底会显示什么。
cityBinding.Format += new ConvertEventHandler(cityBinding_Format);
cityBinding.Parse += new ConvertEventHandler(cityBinding_Parse);
this.textBox3.DataBindings.Add(cityBinding);
代码下载
完成。。。。