単純なデータ バインディングをサポートする .NET Framework Windows フォーム ユーザー コントロールの作成
Note
データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 テクノロジが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。
Windows アプリケーションのフォームにデータを表示する場合は、[ツールボックス] から既存のコントロールを選択するか、またはアプリケーションが標準コントロールでは提供できない機能を必要とする場合は、カスタム コントロールを記述できます。 このチュートリアルでは、DefaultBindingPropertyAttribute を実装するコントロールを作成する方法を示します。 DefaultBindingPropertyAttribute を実装するコントロールには、データにバインドできるプロパティを 1 つ含めることができます。 このようなコントロールは、TextBox や CheckBox に似ています。
コントロール作成の詳細については、デザイン時の Windows フォーム コントロールの開発に関するページを参照してください。
データ バインディングのシナリオで使用するためのコントロールを作成するときは、次のいずれかのデータ バインディング属性を実装する必要があります。
データ バインディング属性の使用 |
---|
単一のデータ列またはプロパティを表示する DefaultBindingPropertyAttribute のような TextBox を簡単なコントロールに実装します。 このチュートリアルでは、このプロセスについて説明します。 |
データの一覧またはテーブルを表示する ComplexBindingPropertiesAttribute のような DataGridView をコントロールに実装します。 詳細については、「複合データ バインディングをサポートする Windows フォーム ユーザー コントロールの作成」を参照してください。 |
データの一覧またはテーブルを表示しますが、単一の列またはプロパティを表示する必要もある LookupBindingPropertiesAttribute のような ComboBox をコントロールに実装します。 詳細については、「ルックアップ データ バインディングをサポートする Windows フォーム ユーザー コントロールを作成する」を参照してください。 |
このチュートリアルでは、テーブルの単一の列のデータを表示する簡単なコントロールを作成します。 この例では、Northwind サンプル データベースの Phone
テーブルの Customers
列を使用します。 この簡単なユーザー コントロールは、MaskedTextBox を使用し、電話番号にマスクを設定して、顧客の電話番号を標準の電話番号形式で表示します。
このチュートリアルでは、次の作業を行う方法について説明します。
新しい Windows フォーム アプリ (.NET Framework) を作成します。
新しいユーザー コントロールをプロジェクトに追加します。
ユーザー コントロールをビジュアルに設計します。
DefaultBindingProperty
属性を実装します。データ ソース構成ウィザードを使用してデータセットを作成します。
[データ ソース] ウィンドウで [Phone] 列が新しいコントロールを使用するように設定します。
フォームを作成して、新しいコントロールにデータを表示します。
前提条件
このチュートリアルを完了するには、Visual Studio にインストールされている .NET デスクトップ開発とデータの保存と処理のワークロードが必要です。 これらをインストールするには、Visual Studio インストーラーを開き、変更する Visual Studio のバージョンの横にある [変更] (または [その他]>[変更] ) を選択します。 Visual Studio の変更に関するページを参照してください。
このチュートリアルでは SQL Server Express LocalDB と Northwind サンプル データベースを使用します。
SQL Server Express LocalDB がない場合は、SQL Server Express のダウンロード ページからインストールするか、Visual Studio インストーラーを使用してインストールします。 Visual Studio インストーラーでは、データ ストレージとデータ処理ワークロードの一部として、または個別のコンポーネントとして、SQL Server Express LocalDB をインストールできます。
次の手順に従って、Northwind サンプル データベースをインストールします。
Visual Studio で、 [SQL Server オブジェクト エクスプローラー] ウィンドウを開きます。 (SQL Server オブジェクト エクスプローラーは、Visual Studio インストーラーのデータ ストレージとデータ処理ワークロードの一部としてインストールされます)。 [SQL Server] ノードを展開します。 LocalDB インスタンスを右クリックし、 [新しいクエリ] を選択します。
クエリ エディター ウィンドウが開きます。
Northwind Transact-SQL スクリプトをクリップボードにコピーします。 この T-SQL スクリプトを使用すると、Northwind データベースが新規作成され、データが設定されます。
T-SQL スクリプトをクエリ エディターに貼り付け、 [実行] ボタンを選択します。
しばらくすると、クエリの実行が完了し、Northwind データベースが作成されます。
Windows フォーム アプリケーションを作成する
最初の手順は、Windows フォーム アプリ (.NET Framework) を作成することです:
Visual Studio の [ファイル] メニューで、 [新規作成]>[プロジェクト] を選択します。
左側のペインで [Visual C#] または [Visual Basic] を展開し、 [Windows デスクトップ] を選択します。
中央のペインで、 [Windows フォーム アプリ] プロジェクト タイプを選択します。
プロジェクトに SimpleControlWalkthrough という名前を付け、 [OK] を選択します。
SimpleControlWalkthrough プロジェクトが作成されてソリューション エクスプローラーに追加されます。
プロジェクトにユーザー コントロールを追加する
このチュートリアルでは、ユーザー コントロールから単純なデータ バインド可能なコントロールを作成します。 SimpleControlWalkthrough プロジェクトにユーザー コントロール項目を追加します。
[プロジェクト] メニューの [ユーザー コントロールの追加] を選択します。
[ファイル名] 領域に「PhoneNumberBox」と入力し、[追加] をクリックします。
PhoneNumberBox コントロールが ソリューション エクスプローラーに追加され、デザイナーが開きます。
PhoneNumberBox コントロールを設計する
このチュートリアルでは、既存の MaskedTextBox を展開して PhoneNumberBox コントロールを作成します。
ツールボックスからユーザー コントロールのデザイン サーフェイスに MaskedTextBox をドラッグします。
ドラッグした MaskedTextBox のスマート タグを選択し、[マスクの設定] を選択します。
[定型入力] ダイアログ ボックスで [電話番号] を選択し、[OK] をクリックしてマスクを設定します。
必要なデータ バインディング属性の追加
データ バインディングをサポートする簡単なコントロールに対しては DefaultBindingPropertyAttribute を実装します。
PhoneNumberBox コントロールをコード ビューに切り替えます。 ([表示] メニューの [コード] を選択します。)
PhoneNumberBox のコードを次のように置き換えます。
using System.Windows.Forms; namespace CS { [System.ComponentModel.DefaultBindingProperty("PhoneNumber")] public partial class PhoneNumberBox : UserControl { public string PhoneNumber { get{ return maskedTextBox1.Text; } set{ maskedTextBox1.Text = value; } } public PhoneNumberBox() { InitializeComponent(); } } }
[ビルド] メニューの [ソリューションのビルド] をクリックします。
データベースからのデータ ソースの作成
この手順では、データ ソース構成ウィザードを使用して、Northwind サンプル データベースの Customers
テーブルに基づいてデータ ソースを作成します。 接続を作成するには、Northwind サンプル データベースへのアクセス権を持っている必要があります。 Northwind サンプル データベースの設定の詳細については、「方法 : サンプル データベースをインストールする」を参照してください。
[データ ソース] ウィンドウを開くには、 [データ] メニューの [データ ソースの表示] をクリックします。
[データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。
[データ ソースの種類の選択] ページで [データベース] を選択し、[次へ] を選択します。
[データ接続の選択] ページで、次のいずれかの操作を行います。
Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は選択します。
[新しい接続] を選択して [接続の追加] または [接続の変更] ダイアログ ボックスを表示します。
データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、 [次へ] を選択します。
[アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。
[データベース オブジェクトの選択] ページで、[テーブル] ノードを展開します。
Customers
テーブルを選択し、 [完了] をクリックします。プロジェクトに NorthwindDataSet が追加され、 [データ ソース] ウィンドウに
Customers
テーブルが表示されます。
PhoneNumberBox コントロールを使用するように [Phone] 列を設定する
[データ ソース] ウィンドウでは、フォームにコントロールをドラッグする前に作成するコントロールを設定できます。
デザイナーで Form1 を開きます。
[データ ソース] ウィンドウの [Customers] ノードを展開します。
[Customers] ノードのドロップダウン リスト矢印をクリックし、コントロール リストの [Details] を選択します。
[Phone] 列のドロップダウン リスト矢印をクリックし、[Customize] をクリックします。
[データ UI カスタマイズ オプション] ダイアログ ボックスの [関連付けられたコントロール] の一覧の [PhoneNumberBox] を選択します。
[Phone] 列のドロップダウン リスト矢印をクリックし、[PhoneNumberBox] をクリックします。
コントロールをフォームに追加する
[データ ソース] ウィンドウからフォームに項目をドラッグして、データ バインド コントロールを作成します。
フォームにデータ バインド コントロールを作成するには、 [データ ソース] ウィンドウからフォームにメインの [Customers] ノードをドラッグし、PhoneNumberBox コントロールを使用して [Phone] 列にデータが表示されることを確認します。
説明のラベルが付いたデータ バインド コントロールとレコード間を移動するためのツール ストリップ (BindingNavigator) がフォームに表示されます。 NorthwindDataSet、CustomersTableAdapter、BindingSource、BindingNavigator がコンポーネント トレイに表示されます。
アプリケーションの実行
F5 キーを押してアプリケーションを実行します。
次のステップ
アプリケーションの要件に応じて、データ バインディングをサポートするコントロールの作成後に、追加の操作を実行できます。 次の手順として、一般的には、次のようなことを実行します。
他のアプリケーションで再利用できるように、コントロール ライブラリにカスタム コントロールを配置します。
より複雑なデータ バインディングのシナリオをサポートするコントロールを作成します。 詳細については、「複合データ バインディングをサポートする Windows フォーム ユーザー コントロールの作成」および「ルックアップ データ バインディングをサポートする Windows フォーム ユーザー コントロールを作成する」を参照してください。