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

更新 : 2007 年 11 月

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

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

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

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

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

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

データの一覧またはテーブルを表示しますが、単一の列またはプロパティを表示する必要もある 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] をクリックします。詳細については、「Windows ベースのアプリケーションの作成」を参照してください。

    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. [データ接続の選択] ページで、次のいずれかの操作を行います。

  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] ノードを選択し、Form1 の CustomerIDLookupBox 内のコンボ ボックスにドラッグします。

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

アプリケーションの実行

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

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

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

参照

処理手順

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

概念

データの新機能

データの表示の概要

その他の技術情報

Visual Studio でのデータへの接続

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

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

Windows アプリケーションのフォームでのデータの表示

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

データの検証

データの保存