Visual C# を使用して DataGrid コントロールをオブジェクトまたは構造体の配列にバインドする

この記事では、オブジェクトの配列を DataGrid コントロールにバインドする方法について説明します。

元の製品バージョン: Visual C#
元の KB 番号: 315786

概要

この記事の例は、オブジェクト プロパティの値を表示する DataGrid コントロールを持つ Windows フォームと、DataGrid コントロールの行を参照するための 4 つのコマンド ボタンで構成されています。

要件

この記事では、次のトピックについて理解していることを前提としています。

  • Visual C# プログラミングの概念
  • Visual C# .NET

クラスを設計する

コントロールにバインドするクラスには、プロパティ アクセサーが必要です。 バインドするプロパティには、プロパティ メソッドと property SetGet メソッドが必要です。 この記事で使用するサンプル クラスには、3 つのメンバーがあります。 この記事では、1 人のメンバーのみが説明されています。 パラメーター化されたコンストラクターも提供されています。 ただし、これは要件ではありません。

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 コード ウィンドウを閉じ、フォーム Designerに切り替えます。

  5. DataGrid コントロールを Form1 に追加します。 DataGrid コントロールのサイズは、4 列と 3 行に対応します。

  6. Form1 に 4 つのボタン コントロールを追加し、ボタンを水平方向に配置します。

  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. [フォーム] Designerに切り替え、フォームを右クリックし、[プロパティ] をクリックします。

  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. [フォーム] Designerを表示するように切り替えます。

  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 フォームデータのコンシューマー」トピックを参照してください。