本文介绍如何将对象数组绑定到 DataGrid 控件。
原始产品版本: Visual C#
原始 KB 数: 315786
总结
本文中的示例包含一个包含 DataGrid 控件的 Windows 窗体,用于显示对象属性值和四个命令按钮,用于浏览 DataGrid 控件的行。
要求
本文假定你熟悉以下主题:
- Visual C# 编程概念
- Visual C# .NET
设计类
要绑定到控件的类必须具有属性访问器。 要绑定的任何属性都必须具有属性 Set 方法和属性 Get 方法。 本文中使用的示例类有三个成员。 本文只介绍了一个成员。 还提供了参数化构造函数。 但是,这不是一项要求。
public class guitar
{
private string make;
private string model;
private short year;
public guitar()
{
}
public guitar(string make, string model, short year)
{
Make=make;
Model=model;
Year=year;
}
public string Make
{
get
{
return make;
}
set
{
make = value;
}
}
}
将类实例添加到数组
若要创建实例并将其添加到数组,请执行以下步骤:
声明数组。
创建类的实例,然后将实例添加到数组。
private guitar[] arr=new guitar[3]; arr[0] = new guitar("Gibson", "Les Paul", 1958); arr[1] = new guitar("Fender", "Jazz Bass", 1964); arr[2] = new guitar("Guild", "Bluesbird", 1971);
将数组绑定到 DataGrid 控件
填充数组后,将 DataGrid 控件的 DataSource 属性设置为数组。 DataGrid 控件中的列是根据存在作用域内属性访问器的属性填充的。
dataGrid1.DataSource=arr;
提供浏览数组的方法
可用于 CurrencyManager 浏览数组。 为此,请与BindingContext控件关联CurrencyManager,在本例中为数组。
private CurrencyManager currencyManager=null;
currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr];
该 CurrencyManager 类具有一个 Position 可用于循环访问数组成员的属性。 通过添加或减去控件的当前值 Position,可以浏览控件的 DataGrid 行。
//Move forward one element.
currencyManager.Position++;
//Move back one element.
currencyManager.Position--;
//Move to the beginning.
currencyManager.Position = 0;
//Move to the end.
currencyManager.Position = arr.Length - 1;
分步示例
在 Visual C# .NET 中,创建新的 Windows 应用程序项目。 Form1 默认创建。
向项目中添加类。
将Class1.cs中的代码替换为以下代码。
public class guitar { private string make; private string model; private short year; public guitar() { } public guitar(string Make, string Model, short Year) { make=Make; model=Model; year=Year; } public string Make { get { return make; } set { make = value; } } public string Model { get { return model; } set { model = value; } } public short Year { get { return year; } set { year = value; } } }关闭 Class1.cs 代码窗口,然后切换到 窗体设计器。
将 DataGrid 控件添加到 Form1。 调整 DataGrid 控件的大小,以适应四列和三行。
向 Form1 添加四个按钮控件,然后水平排列按钮。
将 Button1 的 Text 属性更改为 “下一步”。
将 Button2 的 Text 属性更改为 上一个。
将 Button3 的 Text 属性更改为 First。
将 Button4 的 Text 属性更改为 Last。
将以下代码添加到
Form1类。private guitar[] arr=new guitar[3]; private CurrencyManager currencyManager=null;切换到 窗体设计器,右键单击窗体,然后单击“ 属性”。
单击“事件”图标,然后双击加载事件,将
Form1_Load事件添加到代码中。将以下代码添加到
Form1_Load事件中。arr[0] = new guitar("Gibson", "Les Paul", 1958); arr[1] = new guitar("Fender", "Jazz Bass", 1964); arr[2] = new guitar("Guild", "Bluesbird", 1971); currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr]; dataGrid1.DataSource=arr;切换到查看 窗体设计器。
双击“下一步”,然后将以下代码添加到
button1_Click事件。currencyManager.Position++;双击 “上一页”,然后将以下代码添加到事件
button2_Click。currencyManager.Position--;双击“首先”,然后将以下代码添加到
button3_Click事件。currencyManager.Position = 0;双击“最后一个”,然后将以下代码添加到
button4_Click事件。currencyManager.Position = arr.Length - 1;生成并运行该项目。
单击命令按钮,在 DataGrid 控件的行之间移动。
注意
如果需要,可以编辑对象的值。
使用结构而不是类
绑定结构的规则与绑定对象的规则相同。 需要成员访问器的属性。 为此而创建的结构类似于类。
若要绑定到结构数组,请执行以下步骤。
更改示例中Class1.cs类模块的定义
public class guitar到以下示例:
public struct guitar注释掉默认构造函数,如下所示。
//public guitar() //{ //}再次生成并运行示例程序,并验证它是否具有结构数组。
参考
有关详细信息,请参阅 Visual Studio .NET Online 帮助中的 Windows 窗体 主题上的数据使用者。