Share via


チュートリアル: 検索データ バインドをサポートする Windows フォーム ユーザー コントロールの作成

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

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

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

データ バインド属性の使用

単一のデータ列またはプロパティを表示する TextBox のような DefaultBindingPropertyAttribute を簡単なコントロールに実装します。 詳細については、「チュートリアル: 単純データ バインドをサポートする Windows フォーム ユーザー コントロールの作成」を参照してください。

データの一覧またはテーブルを表示する DataGridView のような ComplexBindingPropertiesAttribute をコントロールに実装します。 詳細については、「チュートリアル: 複合データ バインドをサポートする Windows フォーム ユーザー コントロールの作成」を参照してください。

データの一覧またはテーブルを表示しますが、単一の列またはプロパティを表示する必要もある ComboBox のような LookupBindingPropertiesAttribute をコントロールに実装します。 このチュートリアルでは、このプロセスについて説明します。

このチュートリアルでは、2 つのテーブルのデータにバインドする検索コントロールを作成します。 この例では、Northwind サンプル データベースの Customers テーブルと Orders テーブルを使用します。 この検索コントロールは Orders テーブルの CustomerID フィールドにバインドされます。 コントロールは、この値を使用して Customers テーブルの CompanyName を検索します。

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

  • 新しい Windows アプリケーションを作成します。

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

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

  • LookupBindingProperty 属性を実装します。

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

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

  • フォームを作成して、新しいコントロールにデータを表示します。

必須コンポーネント

このチュートリアルを完了するための要件は次のとおりです。

Windows アプリケーションの作成

最初に Windows アプリケーションを作成します。

新しい Windows プロジェクトを作成するには

  1. Visual Studio の [ファイル] メニューの [新しいプロジェクト] をクリックします。

  2. プロジェクトに LookupControlWalkthrough という名前を付けます。

  3. [Windows アプリケーション] をクリックし、[OK] をクリックします。 詳細については、「.NET Framework を使用したクライアント アプリケーションの開発」を参照してください。

    LookupControlWalkthrough プロジェクトが作成されてソリューション エクスプローラーに追加されます。

プロジェクトへのユーザー コントロールの追加

このチュートリアルではユーザー コントロールから検索コントロールを作成するので、ユーザー コントロールの項目を LookupControlWalkthrough プロジェクトに追加します。

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

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

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

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

LookupBox コントロールの設計

LookupBox コントロールを設計するには

  • ツールボックスからユーザー コントロールのデザイン サーフェイスに ComboBox をドラッグします。

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

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

LookupBindingProperties 属性を実装するには

  1. LookupBox コントロールをコード ビューに切り替えます。 [表示] メニューの [コード] をクリックします。

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

    <System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")>
    Public Class LookupBox
    
        Public Property DataSource() As Object 
            Get 
                Return ComboBox1.DataSource
            End Get 
            Set(ByVal value As Object)
                ComboBox1.DataSource = value
            End Set 
        End Property 
    
        Public Property DisplayMember() As String 
            Get 
                Return ComboBox1.DisplayMember
            End Get 
            Set(ByVal value As String)
                ComboBox1.DisplayMember = value
            End Set 
        End Property 
    
        Public Property ValueMember() As String 
            Get 
                Return ComboBox1.ValueMember
            End Get 
            Set(ByVal value As String)
                ComboBox1.ValueMember = value
            End Set 
        End Property 
    
        Public Property LookupMember() As String 
            Get 
                Return ComboBox1.SelectedValue.ToString()
            End Get 
            Set(ByVal value As String)
                ComboBox1.SelectedValue = value
            End Set 
        End Property 
    End Class
    
    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")]
        public partial class LookupBox : UserControl
        {
            public object DataSource
            {
                get{ return comboBox1.DataSource; }
                set{ comboBox1.DataSource = value; }
            }
    
            public string DisplayMember
            {
                get{ return comboBox1.DisplayMember; }
                set{ comboBox1.DisplayMember = value; }
            }
    
            public string ValueMember
            {
                get{ return comboBox1.ValueMember; }
                set{ comboBox1.ValueMember = value; }
            }
    
            public string LookupMember
            {
                get{ return comboBox1.SelectedValue.ToString(); }
                set{ comboBox1.SelectedValue = value; }
            }
    
    
            public LookupBox()
            {
                InitializeComponent();
            }
        }
    }
    
  3. [ビルド] メニューの [ソリューションのビルド] をクリックします。

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

この手順では、データ ソース構成ウィザードを使用して、Northwind サンプル データベースの Customers テーブルと Orders テーブルに基づいてデータ ソースを作成します。 接続を作成するには、Northwind サンプル データベースへのアクセス権を持っている必要があります。 Northwind サンプル データベースのセットアップの詳細については、「方法 : サンプル データベースをインストールする」を参照してください。

データ ソースを作成するには

  1. [データ] メニューの [データ ソースの表示] をクリックします。

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

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

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

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

      または

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

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

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

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

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

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

LookupBox コントロールを使用するように Orders テーブルの [CustomerID] 列を設定する

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

[CustomerID] 列を LookupBox コントロールにバインドするように設定するには

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

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

  3. [Fax] 列の下の [Customers] 列にある [Orders] ノードを展開します。

  4. [Orders] ノードのドロップダウン矢印をクリックし、コントロール一覧の [Details] を選択します。

  5. [Orders] ノードの [CustomerID] 列のドロップダウン矢印をクリックし、[Customize] をクリックします。

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

  7. [OK] をクリックします。

  8. [CustomerID] 列のドロップダウン矢印をクリックし、[LookupBox] をクリックします。

フォームへのコントロールの追加

[データ ソース] ウィンドウから Form1 に項目をドラッグして、データ バインディング コントロールを作成します。

Windows フォームにデータ バインディング コントロールを作成するには

  • [データ ソース] ウィンドウから Windows フォームに [Orders] ノードをドラッグし、LookupBox コントロールを使用して CustomerID 列にデータが表示されていることを確認します。

Customers テーブルから CompanyName を検索するためにコントロールをバインドする

検索バインドをセットアップするには

  • [データ ソース] ウィンドウでメインの [Customers] ノードを選択し、Form1CustomerIDLookupBox 内のコンボ ボックスにドラッグします。

    これによって、Orders テーブルの CustomerID 値を維持しながら、Customers テーブルの CompanyName を表示するためのデータ バインディングがセットアップされます。 詳細については、「方法: Windows フォーム アプリケーションでルックアップ テーブルを作成する」を参照してください。

アプリケーションの実行

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

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

  • レコード間を移動し、LookupBox コントロールに CompanyName が表示されることを確認します。

参照

処理手順

方法 : [データ ソース] ウィンドウからドラッグしたときに作成されるコントロールを設定する

概念

Visual Studio でのデータへの Windows フォーム コントロールのバインド

アプリケーションでデータを受け取る準備

アプリケーションへのデータのフェッチ

Visual Studio でのデータへのコントロールのバインド

アプリケーションでのデータ編集

データの検証

データの保存

その他の技術情報

Visual Studio でのデータへの接続