把编辑器绑定到以数据库或文件存储的数据不是唯一的选择。 也可以在运行时刻创建和提供数据。 本主题描述如何执行此操作。 要学习关于其他数据绑定的方法,请参阅 数据绑定概述 主题。
为编辑器提供在运行时刻创建的数据
这种数据绑定模式要求数据源是一个拥有“记录”表的对象。 每条“记录”都是一个对象,其公共属性表示记录的字段,其属性值就是字段值。 要为编辑器提供在运行时刻创建的数据,通常需要执行下列步骤:
- 声明一个类,它的实例将呈现记录。 该类的公共属性被作为字段处理。
-
声明一个实现了 IList、ITypedList 或 IBindingList 接口的类。 该类呈现一个作为编辑器数据源的列表。 此列表的元素必须是记录对象。
注意,如果您不想创建自己的列表对象,那么可以使用已经实现这些接口的任何一种已有对象。 例如,DataTable 对象可以作为数据源。 因此,本步骤是可选的。
- 新建一个列表实例,并使用记录填充它。 使用编辑器的 DataBindings 属性把编辑器绑定到字段。
注意,只有实现了 IBindingList 接口的数据源支持数据更改通知。 在使用不支持此接口的数据源时,可能需要人工更新编辑器。 例如,可以使用 BaseControl.Refresh 方法更新编辑器。
示例 —— 为编辑器提供在运行时刻创建的数据
下面的代码创建了一个类,它的实例将呈现记录。 此类声明了两个公共属性 (ID 和 Name),因此可以把编辑器绑定到其数据。
C# | ![]() |
---|---|
public class Record { int id; string name; public Record(int id, string name) { this.id = id; this.name = name; } public int ID { get { return id; } } public string Name { get { return name; } set { name = value; } } } |
Visual Basic | ![]() |
---|---|
Public Class Record Dim _id As Integer Dim _name As String Sub New(ByVal id As Integer, ByVal name As String) Me._id = id Me._name = name End Sub Public ReadOnly Property ID() As Integer Get Return _id End Get End Property Public Property Name() As String Get Return _name End Get Set(ByVal Value As String) _name = Value End Set End Property End Class |
一旦声明了记录类,就可以创建它的实例的一个列表。 此列表将作为数据源。 在创建数据源之后,就可以使用编辑器的 DataBindings 属性把编辑器绑定到字段。 下面的代码展示了如何把一个文本编辑器绑定到 Name 字段。
C# | ![]() |
---|---|
ArrayList list = new ArrayList(); list.Add(new Record(1, "John")); list.Add(new Record(2, "Michael")); textEdit1.DataBindings.Add("EditValue", list, "Name", true); |
Visual Basic | ![]() |
---|---|
Dim List As New ArrayList() List.Add(New Record(1, "John")) List.Add(New Record(2, "Michael")) TextEdit1.DataBindings.Add("EditValue", List, "Name", True) |