次の方法で共有


ADO.NET を使用して複合データ バインディングをサポートする Windows フォーム ユーザー コントロールの作成

Note

データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 これらが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。

Windows アプリケーションのフォームにデータを表示する場合は、ツールボックスから既存のコントロールを選択できます。 また、アプリケーションに標準コントロールでは使用できない機能が必要な場合は、カスタム コントロールを作成できます。 このチュートリアルでは、ComplexBindingPropertiesAttribute を実装するコントロールを作成する方法を示します。 ComplexBindingPropertiesAttribute を実装するコントロールには、データにバインドできる DataSource プロパティと DataMember プロパティが含まれます。 このようなコントロールは、DataGridViewListBox に似ています。

コントロール作成の詳細については、デザイン時の Windows フォーム コントロールの開発に関するページを参照してください。

データ バインディングのシナリオで使用するためのコントロールを作成するときは、次のいずれかのデータ バインディング属性を実装する必要があります。

データ バインディング属性の使用
単一のデータ列またはプロパティを表示する DefaultBindingPropertyAttribute のような TextBox を簡単なコントロールに実装します。 詳細については、「単純なデータ バインディングをサポートする Windows フォーム ユーザー コントロールの作成」を参照してください。
データの一覧またはテーブルを表示する ComplexBindingPropertiesAttribute のような DataGridView をコントロールに実装します。 このチュートリアルでは、このプロセスについて説明します。
データの一覧またはテーブルを表示しますが、単一の列またはプロパティを表示する必要もある LookupBindingPropertiesAttribute のような ComboBox をコントロールに実装します。 詳細については、「ルックアップ データ バインディングをサポートする Windows フォーム ユーザー コントロールを作成する」を参照してください。

このチュートリアルでは、テーブルからのデータ行を表示する複合コントロールを作成します。 この例では、Northwind サンプル データベースの Customers テーブルを使用します。 複合ユーザー コントロールは、カスタム コントロールの DataGridView で Customers テーブルを表示します。

このチュートリアルでは、次の作業を行う方法について説明します。

  • 新しいユーザー コントロールをプロジェクトに追加します。

  • ユーザー コントロールをビジュアルに設計します。

  • ComplexBindingProperty 属性を実装します。

  • データ ソース構成ウィザードを使用してデータセットを作成します。

  • [データ ソース] ウィンドウCustomers テーブルが新しい複合コントロールを使用するように設定します。

  • [データ ソース] ウィンドウから Form1 に新しいコントロールをドラッグして追加します。

前提条件

このチュートリアルを完了するには、Visual Studio にインストールされている .NET デスクトップ開発データの保存と処理のワークロードが必要です。 これらをインストールするには、Visual Studio インストーラーを開き、変更する Visual Studio のバージョンの横にある [変更] (または [その他]>[変更] ) を選択します。 Visual Studio の変更に関するページを参照してください。

このチュートリアルでは SQL Server Express LocalDB と Northwind サンプル データベースを使用します。

  1. SQL Server Express LocalDB がない場合は、SQL Server Express のダウンロード ページからインストールするか、Visual Studio インストーラーを使用してインストールします。 Visual Studio インストーラーでは、データ ストレージとデータ処理ワークロードの一部として、または個別のコンポーネントとして、SQL Server Express LocalDB をインストールできます。

  2. 次の手順に従って、Northwind サンプル データベースをインストールします。

    1. Visual Studio で、 [SQL Server オブジェクト エクスプローラー] ウィンドウを開きます。 (SQL Server オブジェクト エクスプローラーは、Visual Studio インストーラーのデータ ストレージとデータ処理ワークロードの一部としてインストールされます)。 [SQL Server] ノードを展開します。 LocalDB インスタンスを右クリックし、 [新しいクエリ] を選択します。

      クエリ エディター ウィンドウが開きます。

    2. Northwind Transact-SQL スクリプトをクリップボードにコピーします。 この T-SQL スクリプトを使用すると、Northwind データベースが新規作成され、データが設定されます。

    3. T-SQL スクリプトをクエリ エディターに貼り付け、 [実行] ボタンを選択します。

      しばらくすると、クエリの実行が完了し、Northwind データベースが作成されます。

Windows フォーム アプリ プロジェクトを作成する

最初の手順では、C# または Visual Basic 用の Windows フォーム アプリ プロジェクトを作成します。 プロジェクトに ComplexControlWalkthrough という名前を付けます。

プロジェクトにユーザー コントロールを追加する

このチュートリアルではユーザー コントロールからデータ バインディング可能な複合コントロールを作成するので、ユーザー コントロールの項目をプロジェクトに追加します。

  1. [プロジェクト] メニューの [ユーザー コントロールの追加] を選択します。

  2. [ファイル名] 領域に「ComplexDataGridView」と入力し、[追加] をクリックします。

    ComplexDataGridView コントロールがソリューション エクスプローラーに追加され、デザイナーが開きます。

ComplexDataGridView コントロールを設計する

ユーザー コントロールに DataGridView を追加するには、ツールボックスからユーザー コントロールのデザイン サーフェイスに、DataGridView をドラッグします。

必要なデータ バインディング属性の追加

データ バインディングをサポートする複合コントロールには、ComplexBindingPropertiesAttribute を実装できます。

  1. ComplexDataGridView コントロールをコード ビューに切り替えます ([表示] メニューの [コード] を選択します)。

  2. ComplexDataGridView のコードを次のコードで置き換えます。

    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
        public partial class ComplexDataGridView : UserControl
        {
            public object DataSource
            {
                get{ return dataGridView1.DataSource; }
                set{ dataGridView1.DataSource = value; }
            }
    
            public string DataMember
            {
                get{ return dataGridView1.DataMember; }
                set{ dataGridView1.DataMember = value; }
            }
    
            public ComplexDataGridView()
            {
                InitializeComponent();
            }
        }
    }
    
  3. [ビルド] メニューの [ソリューションのビルド] をクリックします。

データベースからのデータ ソースの作成

データ ソース構成ウィザードを使用して、Northwind サンプル データベースの Customers テーブルに基づいてデータ ソースを作成します。

  1. [データ ソース] ウィンドウを開くには、 [データ] メニューの [データ ソースの表示] をクリックします。

  2. [データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。

  3. [データソースの種類を選択] ページで、 [データベース] をクリックし、 [次へ]をクリックします。

  4. [データ接続の選択] ページで、次のいずれかの操作を行います。

    • Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は選択します。

    • [新しい接続] を選択して [接続の追加] または [接続の変更] ダイアログ ボックスを表示します。

  5. データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、[次へ] をクリックします。

  6. [アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。

  7. [データベース オブジェクトの選択] ページで、[テーブル] ノードを展開します。

  8. Customers テーブルを選択し、[完了] をクリックします。

    プロジェクトに NorthwindDataSet が追加され、 [データ ソース] ウィンドウに Customers テーブルが表示されます。

ComplexDataGridView コントロールを使用するように Customers テーブルを設定する

[データ ソース] ウィンドウでは、フォームにコントロールをドラッグする前に作成するコントロールを設定できます。

  1. デザイナーで Form1 を開きます。

  2. [データ ソース] ウィンドウの [Customers] ノードを展開します。

  3. [Customers] ノードのドロップダウン リスト矢印をクリックし、[カスタマイズ] をクリックします。

  4. [データ UI カスタマイズ オプション] ダイアログ ボックスの [関連付けられたコントロール] の一覧の [ComplexDataGridView] を選択します。

  5. Customers テーブルのドロップダウン リスト矢印をクリックし、コントロール リストから ComplexDataGridView を選択します。

コントロールをフォームに追加する

[データ ソース] ウィンドウからフォームに項目をドラッグして、データ バインド コントロールを作成します。 [データ ソース] ウィンドウからフォームにメインの [Customers] ノードをドラッグします。 テーブルのデータを表示するために ComplexDataGridView コントロールが使用されていることを確認します。

アプリケーションの実行

F5 キーを押してアプリケーションを実行します。

次のステップ

アプリケーションの要件に応じて、データ バインディングをサポートするコントロールの作成後に、追加の操作を実行できます。 次の手順として、一般的には、次のようなことを実行します。