使用 Visual C# 將 DataGrid 控件系結至物件或結構的數位

本文提供如何將物件的陣列系結至 DataGrid 控件的相關信息。

原始產品版本: Visual C#
原始 KB 編號: 315786

摘要

本文中的範例包含具有 DataGrid 控制件的 Windows 表單,可顯示物件屬性值和四個命令按鈕,以流覽 DataGrid 控件的數據列。

需求

本文假設您已熟悉下列主題:

  • Visual C# 程式設計概念
  • Visual C# .NET

設計類別

要系結至控件的類別必須具有屬性存取子。 要系結的任何屬性都必須具有 property Set 方法和 property 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. 將四個 Button 控件新增至 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 Forms 上的數據取用者主題。