次の方法で共有


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

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

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

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

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

データ バインディング属性の使用方法
データの単一の列 (またはプロパティ) を表示するDefaultBindingPropertyAttributeなどの単純なコントロールにTextBoxを実装します。 詳細については、「 単純なデータ バインディングをサポートする Windows フォーム ユーザー コントロールを作成する」を参照してください。
データのリスト (またはテーブル) を表示するComplexBindingPropertiesAttributeなどのコントロールにDataGridViewを実装します。 (このプロセスについては、このチュートリアル ページで説明します)。
データのリスト (またはテーブル) を表示するが、1 つの列またはプロパティを表示する必要があるコントロール (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. [データ ソース] ウィンドウで [顧客] ノードを展開します。

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

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

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

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

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

アプリケーションを実行する

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

次のステップ

アプリケーションの要件に応じて、データ バインドをサポートするコントロールを作成した後に実行する必要がある手順がいくつかあります。 一般的な次の手順には、次のようなものがあります。