使用 Visual C# 将 DataGrid 控件绑定到对象或结构数组

本文介绍如何将对象数组绑定到 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;
        }
    }
}

将类实例添加到数组

若要创建实例并将其添加到数组,请执行以下步骤:

  1. 声明数组。

  2. 创建类的实例,然后将实例添加到数组。

    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;

分步示例

  1. 在 Visual C# .NET 中,创建新的 Windows 应用程序项目。 Form1 默认创建。

  2. 向项目中添加类。

  3. 将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;
            }
        }
    }
    
  4. 关闭 Class1.cs 代码窗口,然后切换到 窗体设计器

  5. 将 DataGrid 控件添加到 Form1。 调整 DataGrid 控件的大小,以适应四列和三行。

  6. 向 Form1 添加四个按钮控件,然后水平排列按钮。

  7. Button1 的 Text 属性更改为 “下一步”。

  8. Button2 的 Text 属性更改为 上一个

  9. Button3 的 Text 属性更改为 First

  10. Button4 的 Text 属性更改为 Last

  11. 将以下代码添加到 Form1 类。

    private guitar[] arr=new guitar[3];
    private CurrencyManager currencyManager=null;
    
  12. 切换到 窗体设计器,右键单击窗体,然后单击“ 属性”。

  13. 单击“事件”图标,然后双击加载事件,将Form1_Load事件添加到代码中。

  14. 将以下代码添加到 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;
    
  15. 切换到查看 窗体设计器

  16. 双击“下一步,然后将以下代码添加到button1_Click事件。

    currencyManager.Position++;
    
  17. 双击 “上一页”,然后将以下代码添加到事件 button2_Click

    currencyManager.Position--;
    
  18. 双击“首先,然后将以下代码添加到button3_Click事件。

    currencyManager.Position = 0;
    
  19. 双击“最后一个”,然后将以下代码添加到button4_Click事件。

    currencyManager.Position = arr.Length - 1;
    
  20. 生成并运行该项目。

  21. 单击命令按钮,在 DataGrid 控件的行之间移动。

    注意

    如果需要,可以编辑对象的值。

使用结构而不是类

绑定结构的规则与绑定对象的规则相同。 需要成员访问器的属性。 为此而创建的结构类似于类。

若要绑定到结构数组,请执行以下步骤。

  1. 更改示例中Class1.cs类模块的定义

    public class guitar
    

    到以下示例:

    public struct guitar
    
  2. 注释掉默认构造函数,如下所示。

    //public guitar()
    //{
    //}
    
  3. 再次生成并运行示例程序,并验证它是否具有结构数组。

参考

有关详细信息,请参阅 Visual Studio .NET Online 帮助中的 Windows 窗体 主题上的数据使用者。