CodeZine(コードジン)

特集ページ一覧

オブジェクトバインディングに関するヒントとテクニック

.NET Framework 2.0で強化されたデータバインディング機能

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/05/09 14:45

Visual Studio 2005と.NET Framework 2.0では、Windows Formsにおけるデータバインディングの処理が大きく強化されています。本稿では、Windows Formsアプリケーションで使用できるクラス、インターフェイス、およびコーディングのテクニックについて説明します。

目次

はじめに

 筆者は、Visual Basic 2.0以来、データバインディングの概念を嫌ってきた多くの開発者の1人でした。データバインディングの仕組みは拡張性が低く、有益なプログラミング手法を活用していないし、期待通りに動作しないこともしょっちゅうでした。しかし、今はオブジェクトバインディングの愛好者であることを認めざるを得ません。

 本稿では、まず、オブジェクトバインディングの基本について説明します。次に、オブジェクトバインディングをよりよく活用するためのヒントとテクニックを示します。オブジェクトバインディングで実行できることをすべて理解したならば、読者もこれが気に入ることでしょう。

オブジェクトバインディングの基本

 Windows Formsにおけるオブジェクトバインディングの大前提は、TextプロパティなどのWindows Formsコントロールプロパティを、ビジネスオブジェクトプロパティに結び付けることです。ビジネスオブジェクトを作成し、プロパティに値を代入すると、プロパティ値をコントロールにコピーするコードを記述しなくても、その値がアプリケーションのユーザーインターフェイスに反映されます。そしてユーザーがコントロールの内容を変更すると、更新された値がビジネスオブジェクトのプロパティに自動的に代入されます。

 例えば、顧客情報を表示するフォームと、LastNameプロパティおよびFirstNameプロパティを持つCustomerビジネスオブジェクトがあるものとします。オブジェクトバインディングを使用すると、LastNameプロパティをLastNameテキストボックスのTextプロパティに割り当てるコードや、FirstNameプロパティ値をFirstNameテキストボックスのTextプロパティに割り当てるコードを記述する必要がありません。ユーザーがコントロール内のテキストを変更する場合は、逆が当てはまります。つまり、このすべての処理が自動的に行われるのです。

 データベースへのバインディングでは、あらかじめ生成されている大量のコードにバインドする必要がありますが、それに対してオブジェクトバインディングでは、自分で記述したコードにバインドします。そのため、自分で多くを管理することが可能であり、アプリケーションのメンテナンスが非常に簡単です。

 オブジェクトバインディングを試すために、新しいWindows Formsプロジェクトを作成し、クラスを1つ追加してみましょう(実際のアプリケーションでは、このクラスを別のプロジェクトに含める場合もあります。このサンプルでは、話を簡単にするために、すべてのクラスをWindows Formsプロジェクトに追加します)。次に、そのクラスにさまざまなプロパティを持たせます。例えば、Customerクラスには、LastNameFirstNameCustomerIDの各プロパティがあります。LastNameプロパティのコードを以下に示します。

VBの場合
Private _LastName As String
Public Property LastName() As String
   Get
      Return _LastName
   End Get
   Set(ByVal value As String)
      _LastName = value
   End Set
End Property
C#の場合
private string _LastName;
public string LastName
{
   get { return _LastName;}
   set { _LastName = value;}
}

 プロパティプロシージャを作成するには、Propertyスニペットを使用するのが最も簡単です。VBコードウィンドウで「property」と入力し、[Tab]キーを押して、VB Propertyプロシージャを作成します。C#コードウィンドウでは、「prop」と入力し、[Tab]キーを2回押してプロパティを作成します。スニペットの使用または独自のスニペットの作成の詳細については、『CoDe Magazine』2006年1月/2月号の「Having Fun with Code Snippets」を参照してください。

 ビジネスオブジェクト上で目的のプロパティを定義したら、プロジェクトをビルドします。ビルドプロセスによって、[Data Sources]ウィンドウからビジネスオブジェクトにアクセスできるようになります。ビジネスオブジェクトにプロパティを追加する場合はいつでも、[Data Sources]ウィンドウにプロパティが表示される前に、プロジェクトをリビルドする必要があります。

 次に、データソースをビルドします。[Data Sources]ウィンドウが表示されていない場合は、[Data]ウィンドウの[Show Data Sources]を選択して表示し、[Add New Data Source]をクリックします。データソース構成ウィザードが起動します。

 オブジェクトバインディングデータソースを作成するには、ウィザードの先頭のページで[Object]を選択し、2番目のページで目的のビジネスオブジェクトを選択します。[Finish]ボタンをクリックすると、[Data Sources]ウィンドウに新しいオブジェクトデータソースが表示されます。オブジェクトの各プロパティが、ウィンドウ内のオブジェクト名の下に表示されることに注意してください。

 さて、これからが本番です。プロジェクトを作成するときに作成された既定のフォームを開きます。[Data Sources]ウィンドウ内のビジネスオブジェクトに関連するコンボボックスをドロップダウンし、[DataGridView]を選択して、すべてのビジネスオブジェクトをグリッドで表示するか、[Details]を選択して、個々のビジネスオブジェクトプロパティをフォーム上の個別のコントロールとして表示します。最後に、[Data Sources]ウィンドウからフォームへ、ビジネスオブジェクトの名前をドラッグします。図1は、[Details]セクションを使った場合の結果を示しています。[Data Sources]ウィンドウによるフォーム作成の詳細については、『CoDe Magazine』2004年9月/10月号の「Drag-Once Databinding」を参照してください。

図1 既定では、ビジネスオブジェクトをフォームにドラッグすると、BindingNavigator(ビデオデッキのボタンに似たコントロールツールバー)もフォームに追加される。これが不要な場合は削除する。
図1 既定では、ビジネスオブジェクトをフォームにドラッグすると、BindingNavigator(ビデオデッキのボタンに似たコントロールツールバー)もフォームに追加される。これが不要な場合は削除する。

 オブジェクトバインディングデータソースは、フォームのコンポーネントトレイに自動的に追加され、ビジネスオブジェクトの名前にちなんだ名前が付けられます。この例の場合は、「CustomerBindingSource」です。生成されるコントロールは、このバインディングソースに自動的にバインドされます。

 Visual Studio IDEは、プロパティの名前を使ってコントロールのラベルを作成しますが、アンダースコアや英字の大文字/小文字に基づいて単語間に空白を追加したりできます。これは、アプリケーションのユーザーインターフェイスの開始点として、非常に優れています。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • Deborah Kurata(Deborah Kurata)

    ビジネスの構想をMicrosoft .NETテクノロジで実現することに力を注ぐコンサルティング会社InStep Technologies Inc.の共同設立者。優れた.NETアプリケーションの設計、デザイン、開発に15年以上従事。『Doing Objects in Visual Basic 6.0』...

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5