チュートリアル: 検索データ バインドをサポートする Windows フォーム ユーザー コントロールの作成
公開日: 2016年4月
フォームにデータを表示する場合は、ツールボックスから既存のコントロールを選択するか、またはアプリケーションが標準コントロールでは提供できない機能を必要とする場合は、カスタム コントロールを記述できます。 このチュートリアルでは、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] 列が新しいコントロールを使用するように設定します。
フォームを作成して、新しいコントロールにデータを表示します。
必須コンポーネント
このチュートリアルを完了するための要件は次のとおりです。
- Northwind サンプル データベースにアクセスします。 詳細については、「方法 : サンプル データベースをインストールする」を参照してください。
Windows アプリケーションの作成
最初に Windows アプリケーションを作成します。
新しい Windows プロジェクトを作成するには
Visual Studio の [ファイル] メニューの [新しいプロジェクト] をクリックします。
プロジェクトに LookupControlWalkthrough という名前を付けます。
[Windows アプリケーション] をクリックし、[OK] をクリックします。 詳細については、「クライアント アプリケーション」を参照してください。
LookupControlWalkthrough プロジェクトが作成されてソリューション エクスプローラーに追加されます。
プロジェクトへのユーザー コントロールの追加
このチュートリアルではユーザー コントロールから検索コントロールを作成するので、ユーザー コントロールの項目を LookupControlWalkthrough プロジェクトに追加します。
プロジェクトにユーザー コントロールを追加するには
[プロジェクト] メニューの [ユーザー コントロールの追加] をクリックします。
[ファイル名] 領域に「
LookupBox
」と入力し、[追加] をクリックします。LookupBox コントロールが ソリューション エクスプローラーに追加され、デザイナーが開きます。
LookupBox コントロールの設計
LookupBox コントロールを設計するには
- ツールボックスからユーザー コントロールのデザイン サーフェイスに ComboBox をドラッグします。
必要なデータ バインディング属性の追加
データ バインディングをサポートする検索コントロールには、LookupBindingPropertiesAttribute を実装できます。
LookupBindingProperties 属性を実装するには
LookupBox コントロールをコード ビューに切り替えます。 [表示] メニューの [コード] をクリックします。
LookupBox
のコードを次のコードで置き換えます。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(); } } }
<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
[ビルド] メニューの [ソリューションのビルド] をクリックします。
データベースからのデータ ソースの作成
この手順では、データ ソース構成ウィザードを使用して、Northwind サンプル データベースの Customers
テーブルと Orders
テーブルに基づいてデータ ソースを作成します。 接続を作成するには、Northwind サンプル データベースへのアクセス権を持っている必要があります。 Northwind サンプル データベースのセットアップの詳細については、「方法 : サンプル データベースをインストールする」を参照してください。
データ ソースを作成するには
[データ] メニューの [データ ソースの表示] をクリックします。
[データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。
[データソースの種類を選択] ページで、[データベース] をクリックし、[次へ] をクリックします。
[データ接続の選択] ページで、次のいずれかの操作を行います。
Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は選択します。
または
[新しい接続] を選択して [接続の追加] または [接続の変更] ダイアログ ボックスを表示します。
データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、[次へ] をクリックします。
[アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。
[データベース オブジェクトの選択] ページの [テーブル] ノードを展開します。
Customers
テーブルとOrders
テーブルを選択し、[完了] をクリックします。プロジェクトに NorthwindDataSet が追加され、[データ ソース] ウィンドウに
Customers
テーブルとOrders
テーブルが表示されます。
LookupBox コントロールを使用するように Orders テーブルの [CustomerID] 列を設定する
[データ ソース] ウィンドウでは、フォームにコントロールをドラッグする前に作成するコントロールを設定できます。
[CustomerID] 列を LookupBox コントロールにバインドするように設定するには
デザイナーで Form1 を開きます。
[データ ソース] ウィンドウの [Customers] ノードを展開します。
[Fax] 列の下の [Customers] 列にある [Orders] ノードを展開します。
[Orders] ノードのドロップダウン矢印をクリックし、コントロール一覧の [Details] を選択します。
[Orders] ノードの [CustomerID] 列のドロップダウン矢印をクリックし、[Customize] をクリックします。
[データ UI カスタマイズ オプション] ダイアログ ボックスの [関連付けられたコントロール] の一覧の [LookupBox] を選択します。
[OK] をクリックします。
[CustomerID] 列のドロップダウン矢印をクリックし、[LookupBox] をクリックします。
フォームへのコントロールの追加
[データ ソース] ウィンドウから Form1 に項目をドラッグして、データ バインディング コントロールを作成します。
Windows フォームにデータ バインディング コントロールを作成するには
- [データ ソース] ウィンドウから Windows フォームに [Orders] ノードをドラッグし、LookupBox コントロールを使用して
CustomerID
列にデータが表示されていることを確認します。
Customers テーブルから CompanyName を検索するためにコントロールをバインドする
検索バインドをセットアップするには
[データ ソース] ウィンドウでメインの [Customers] ノードを選択し、Form1 の CustomerIDLookupBox 内のコンボ ボックスにドラッグします。
これによって、
Orders
テーブルのCustomerID
値を維持しながら、Customers
テーブルのCompanyName
を表示するためのデータ バインディングがセットアップされます。 詳細については、「方法: Windows フォーム アプリケーションでルックアップ テーブルを作成する」を参照してください。
アプリケーションの実行
アプリケーションを実行するには
F5 キーを押してアプリケーションを実行します。
レコード間を移動し、
LookupBox
コントロールにCompanyName
が表示されることを確認します。
参照
[データ ソース] ウィンドウからドラッグしたときに作成されるコントロールを設定する
Visual Studio でのデータへの Windows フォーム コントロールのバインド
Visual Studio でのデータへの接続
アプリケーションでデータを受け取る準備
アプリケーションへのデータのフェッチ
Visual Studio でのデータへのコントロールのバインド
アプリケーションでのデータ編集
データの検証
データの保存