データ連結に関連するインターフェイスInterfaces Related to Data Binding

Ado.net では、アプリケーションを使用するデータのバインドのニーズに合わせてさまざまなデータ構造を作成できます。With ADO.NET, you can create many different data structures to suit the binding needs of your application and the data you are working with. Windows フォームでデータを提供または使用するための独自のクラスを作成することもできます。You may want to create your own classes that provide or consume data in Windows Forms. これらのオブジェクトは、基本的なデータ バインディングから、デザイン時サポートの提供、エラー チェック、変更通知、データ自体に加えられた変更の構造化されたロールバックのサポートに至るまで、さまざまなレベルの機能を提供することができ、複雑さに対応できます。These objects can offer varying levels of functionality and complexity, from basic data binding, to providing design-time support, error checking, change notification, or even support for a structured rollback of the changes made to the data itself.

データ バインディング インターフェイスのコンシューマーConsumers of Data-Binding Interfaces

以下のセクションでは、インターフェイス オブジェクトの 2 つのグループについて説明します。Following sections describe two groups of interface objects. 1 つ目のグループでは、データ ソース作成者がデータ ソースに実装するインターフェイスを示します。The first group lists interfaces that are implemented on data sources by data source authors. これらのインターフェイスは、データ ソース コンシューマーが使用するように設計されています。ほとんどの場合、データ ソース コンシューマーは、Windows フォーム コントロールまたはコンポーネントです。These interfaces are designed to be consumed by data source consumers, which are in most cases Windows Forms controls or components. 2 つ目のグループでは、コンポーネント作成者向けに設計されたインターフェイスを示します。The second group lists interfaces designed for use by component authors. コンポーネント作成者は、Windows フォーム データ バインディング エンジンが使用する、データ バインディングをサポートするコンポーネントを作成するときにこれらのインターフェイスを使用します。Component authors use these interfaces when they are creating a component that supports data binding to be consumed by the Windows Forms data-binding engine. フォームに関連付けられたクラス内でこれらのインターフェイスを実装することで、データ バインディングを実現できます。各ケースは、データの操作を可能にするインターフェイスを実装するクラスを示しています。You can implement these interfaces within classes associated with your form to enable data binding; each case presents a class that implements an interface that enables interaction with data. Visual Studio アプリケーションの迅速な開発 (RAD) データ デザイン エクスペリエンス ツールでは、この機能のこと既に活用します。Visual Studio rapid application development (RAD) data design experience tools already take advantage of this functionality.

データ ソース作成者が実装するインターフェイスInterfaces for Implementation by Data Source Authors

以下のインターフェイスは、Windows フォーム コントロールで使用するように設計されています。The following interfaces are designed to be consumed by Windows Forms controls:

  • IList インターフェイスIList interface

    実装するクラス、IListインターフェイス可能性があります、 ArrayArrayList、またはCollectionBaseします。A class that implements the IList interface could be an Array, ArrayList, or CollectionBase. これらの種類の項目のインデックス付きリストは、Objectします。These are indexed lists of items of type Object. インデックスの最初の項目によって型が決定されるため、これらのリストには同種の型が含まれている必要があります。These lists must contain homogenous types, because the first item of the index determines the type. IList 実行時にのみバインドできるようになります。IList would be available for binding only at run time.

    注意

    Windows フォームでビジネス オブジェクトのバインドの一覧を作成する場合は、使用を検討する必要があります、BindingList<T>します。If you want to create a list of business objects for binding with Windows Forms, you should consider using the BindingList<T>. BindingList<T>双方向 Windows フォーム データ バインディングに必要な主要インターフェイスを実装する拡張可能なクラスです。The BindingList<T> is an extensible class that implements the primary interfaces required for two-way Windows Forms data binding.

  • IBindingList インターフェイスIBindingList interface

    実装するクラス、IBindingListインターフェイスには、データ バインディング機能の非常に高いレベルが用意されています。A class that implements the IBindingList interface provides a much higher level of data-binding functionality. この実装では、基本的な並べ替え機能と変更通知を提供します。変更通知では、リスト項目が変更されたとき (たとえば、顧客リストの 3 番目の項目の Address フィールドが変更されたとき) と、リスト自体が変更されたとき (たとえば、リスト内の項目の数が増減したとき) のどちらの場合も変更が通知されます。This implementation offers you basic sorting capabilities and change notification, both for when the list items change (for example, the third item in a list of customers has a change to the Address field), as well as when the list itself changes (for example, the number of items in the list increases or decreases). 複数のコントロールを同じデータにバインドする予定であり、いずれかのコントロールで行われたデータ変更をバインドされた他のコントロールに反映させる必要がある場合に、変更通知が重要になります。Change notification is important if you plan to have multiple controls bound to the same data, and you want data changes made in one of the controls to propagate to the other bound controls.

    注意

    変更通知が有効になって、IBindingListによってインターフェイスをSupportsChangeNotificationプロパティがときに、 true、発生させる、ListChangedイベント、変更一覧または一覧内の項目を示す変更します。Change notification is enabled for the IBindingList interface through the SupportsChangeNotification property which, when true, raises a ListChanged event, indicating the list changed or an item in the list changed.

    変更の種類は、ListChangedTypeのプロパティ、ListChangedEventArgsパラメーター。The type of change is described by the ListChangedType property of the ListChangedEventArgs parameter. したがって、データ モデルが更新されるたびに、依存するビュー (同じデータ ソースにバインドされた他のコントロールなど) も更新されます。Hence, whenever the data model is updated, any dependent views, such as other controls bound to the same data source, will also be updated. ただし、リスト内に含まれるオブジェクトがリストにリストを発生させることができるように変更するときに通知する必要が、ListChangedイベント。However, objects contained within the list will have to notify the list when they change so that the list can raise the ListChanged event.

    注意

    BindingList<T>の汎用実装を提供します、IBindingListインターフェイス。The BindingList<T> provides a generic implementation of the IBindingList interface.

  • IBindingListView インターフェイスIBindingListView interface

    実装するクラス、IBindingListViewインターフェイスの実装のすべての機能を提供するIBindingListに加えて、としてフィルター処理および高度な並べ替え機能します。A class that implements the IBindingListView interface provides all the functionality of an implementation of IBindingList, as well as filtering and advanced sorting functionality. この実装では、文字列ベースのフィルター処理と、プロパティ記述子と方向のペアによる複数列の並べ替え機能を提供します。This implementation offers string-based filtering, and multicolumn sorting with property descriptor-direction pairs.

  • IEditableObject インターフェイスIEditableObject interface

    実装するクラス、IEditableObjectインターフェイスにより、そのオブジェクトへの変更を永続的なものとを制御するオブジェクト。A class that implements the IEditableObject interface allows an object to control when changes to that object are made permanent. この実装により、 BeginEditEndEdit、およびCancelEditメソッドで、オブジェクトに加えられた変更をロールバックすることを有効にします。This implementation affords you the BeginEdit, EndEdit, and CancelEdit methods, which enable you to roll back changes made to the object. 機能の簡単な説明を次に、 BeginEditEndEdit、およびCancelEditメソッドと組み合わせて、データに加えられた変更のロールバックを実現するために相互しくみ。Following is a brief explanation of the functioning of the BeginEdit, EndEdit, and CancelEdit methods and how they work in conjunction with one another to enable a possible rollback of changes made to the data:

    • BeginEditメソッドがオブジェクトでの編集の開始を通知します。The BeginEdit method signals the start of an edit on an object. このインターフェイスを実装するオブジェクトが後に、更新プログラムを保存する必要があります、BeginEditメソッドの呼び出し、更新プログラムを破棄できるように場合、CancelEditメソッドが呼び出されます。An object that implements this interface will need to store any updates after the BeginEdit method call in such a way that the updates can be discarded if the CancelEdit method is called. データ バインディング Windows フォームで呼び出すことができますBeginEdit複数回、1 つのスコープ内で編集トランザクション (たとえば、 BeginEditBeginEditEndEdit)。In data binding Windows Forms, you can call BeginEdit multiple times within the scope of a single edit transaction (for example, BeginEdit, BeginEdit, EndEdit). 実装IEditableObjectかどうかを追跡する必要がありますBeginEditが既に呼び出され、後続の呼び出しを無視BeginEditします。Implementations of IEditableObject should keep track of whether BeginEdit has already been called and ignore subsequent calls to BeginEdit. このメソッドは、複数回呼び出すことが、ため後続の呼び出しが非破壊的な; ことが重要です。後続BeginEdit呼び出しが行われたまたは保存されたデータを変更する更新プログラムを破棄できません。 最初のBeginEdit呼び出します。Because this method can be called multiple times, it is important that subsequent calls to it are nondestructive; that is, subsequent BeginEdit calls cannot destroy the updates that have been made or change the data that was saved on the first BeginEdit call.

    • EndEditメソッドは、以降のすべての変更をプッシュBeginEditを基になるオブジェクトにオブジェクトが現在編集モードである場合に呼び出されました。The EndEdit method pushes any changes since BeginEdit was called into the underlying object, if the object is currently in edit mode.

    • CancelEditメソッドは、オブジェクトに加えられた変更を破棄します。The CancelEdit method discards any changes made to the object.

    方法の詳細についてはBeginEditEndEdit、およびCancelEditメソッドの動作を参照してくださいデータをデータベースに保存します。For more information about how the BeginEdit, EndEdit, and CancelEdit methods work, see Save data back to the database.

    データ機能のこのトランザクションの概念を使って、DataGridViewコントロール。This transactional notion of data functionality is used by the DataGridView control.

  • ICancelAddNew インターフェイスICancelAddNew interface

    実装するクラス、ICancelAddNewインターフェイスは通常、実装、IBindingListインターフェイスし、のデータ ソースへの追加をロールバックすることができます、AddNewメソッド。A class that implements the ICancelAddNew interface usually implements the IBindingList interface and allows you to roll back an addition made to the data source with the AddNew method. 場合は、データ ソースの実装、IBindingListインターフェイスも必要、実装、ICancelAddNewインターフェイス。If your data source implements the IBindingList interface, you should also have it implement the ICancelAddNew interface.

  • IDataErrorInfo インターフェイスIDataErrorInfo interface

    実装するクラス、IDataErrorInfoインターフェイスにより、バインドされたコントロールにカスタム エラー情報を提供するオブジェクト。A class that implements the IDataErrorInfo interface allows objects to offer custom error information to bound controls:

    • Errorプロパティは、一般的なエラー メッセージ テキストを返します (たとえば、「エラーが発生しました」)。The Error property returns general error message text (for example, "An error has occurred").

    • Item[String]プロパティは、列から特定のエラー メッセージ文字列を返します (たとえば、"の値、State列は無効です")。The Item[String] property returns a string with the specific error message from the column (for example, "The value in the State column is invalid").

  • IEnumerable インターフェイスIEnumerable interface

    実装するクラス、IEnumerableインターフェイスは通常、ASP.NET によって処理されます。A class that implements the IEnumerable interface is typically consumed by ASP.NET. このインターフェイスのサポートを Windows フォームはのみ、BindingSourceコンポーネント。Windows Forms support for this interface is only available through the BindingSource component.

    注意

    BindingSourceコンポーネントがすべてコピーIEnumerableバインディングのための独立したリストにアイテムをします。The BindingSource component copies all IEnumerable items into a separate list for binding purposes.

  • ITypedList インターフェイスITypedList interface

    実装するコレクション クラス、ITypedListインターフェイスには、順序と、バインドされたコントロールに公開されるプロパティのセットを制御する機能が用意されています。A collections class that implements the ITypedList interface provides the ability to control the order and the set of properties exposed to the bound control.

    注意

    実装する場合、GetItemPropertiesメソッド、およびPropertyDescriptor配列が null でないと、配列の最後のエントリは項目の一覧をもう 1 つであるリスト プロパティを説明するプロパティ記述子になります。When you implement the GetItemProperties method, and the PropertyDescriptor array is not null, the last entry in the array will be the property descriptor that describes the list property that is another list of items.

  • ICustomTypeDescriptor インターフェイスICustomTypeDescriptor interface

    実装するクラス、ICustomTypeDescriptorインターフェイス自体に関する動的な情報を提供します。A class that implements the ICustomTypeDescriptor interface provides dynamic information about itself. このインターフェイスはのようなITypedListがリストではなく、オブジェクトに使用されます。This interface is similar to ITypedList but is used for objects rather than lists. このインターフェイスを使ってDataRowView基になる行のスキーマをプロジェクトにします。This interface is used by DataRowView to project the schema of the underlying rows. 単純な実装ICustomTypeDescriptorによって提供される、CustomTypeDescriptorクラス。A simple implementation of ICustomTypeDescriptor is provided by the CustomTypeDescriptor class.

    注意

    デザイン時のバインドをサポートする型を実装ICustomTypeDescriptor、型を実装する必要がありますもIComponentフォーム上のインスタンスとして存在します。To support design-time binding to types that implement ICustomTypeDescriptor, the type must also implement IComponent and exist as an instance on the Form.

  • IListSource インターフェイスIListSource interface

    実装するクラス、IListSourceインターフェイスが非リスト オブジェクトでリストベース バインディングを使用します。A class that implements the IListSource interface enables list-based binding on non-list objects. GetListメソッドのIListSourceから継承されていないオブジェクトからバインド可能なリストを返すために使用IListします。The GetList method of IListSource is used to return a bindable list from an object that does not inherit from IList. IListSource 使って、DataSetクラス。IListSource is used by the DataSet class.

  • IRaiseItemChangedEvents インターフェイスIRaiseItemChangedEvents interface

    実装するクラス、IRaiseItemChangedEventsインターフェイスも実装するバインド可能なリストは、IBindingListインターフェイス。A class that implements the IRaiseItemChangedEvents interface is a bindable list that also implements the IBindingList interface. このインターフェイスの使用を示すかどうか、型が発生しますListChangedの種類のイベントItemChangedを通じてそのRaisesItemChangedEventsプロパティ。This interface is used to indicate if your type raises ListChanged events of type ItemChanged through its RaisesItemChangedEvents property.

    注意

    実装する必要があります、 IRaiseItemChangedEvents 、データ ソースは、前に説明した一覧イベントを変換するプロパティを提供しとの対話は、BindingSourceコンポーネント。You should implement the IRaiseItemChangedEvents if your data source provides the property to list event conversion described previously and is interacting with the BindingSource component. それ以外の場合、BindingSourceプロパティをパフォーマンスが低下リスト イベントへの変換を実行することもできます。Otherwise, the BindingSource will also perform property to list event conversion resulting in slower performance.

  • ISupportInitialize インターフェイスISupportInitialize interface

    実装するコンポーネント、ISupportInitializeインターフェイスは、プロパティの設定および依存するプロパティの初期化中にバッチ最適化の利点があります。A component that implements the ISupportInitialize interface takes advantages of batch optimizations for setting properties and initializing co-dependent properties. ISupportInitialize 2 つのメソッドが含まれています。The ISupportInitialize contains two methods:

    • BeginInit そのオブジェクトの初期化の開始を通知します。BeginInit signals that object initialization is starting.

    • EndInit そのオブジェクトの初期化が終了した後に通知します。EndInit signals that object initialization is finishing.

  • ISupportInitializeNotification インターフェイスISupportInitializeNotification interface

    実装するコンポーネント、ISupportInitializeNotificationインターフェイスの実装も、ISupportInitializeインターフェイス。A component that implements the ISupportInitializeNotification interface also implements the ISupportInitialize interface. このインターフェイスを使用すると、その他の通知ISupportInitializeコンポーネント初期化が完了します。This interface allows you to notify other ISupportInitialize components that initialization is complete. ISupportInitializeNotificationインターフェイスには、2 つのメンバーが含まれています。The ISupportInitializeNotification interface contains two members:

  • INotifyPropertyChanged インターフェイスINotifyPropertyChanged interface

    このインターフェイスを実装するクラスは、プロパティ値のいずれかが変更されたときにイベントを発生させる型です。A class that implements this interface is a type that raises an event when any of its property values change. このインターフェイスは、コントロールのプロパティごとに変更イベントを持つパターンを置き換えるように設計されています。This interface is designed to replace the pattern of having a change event for each property of a control. 使用すると、 BindingList<T>、ビジネス オブジェクトを実装する必要があります、INotifyPropertyChangedインターフェイスと、BindingList`1 に変換されますPropertyChangedイベントListChangedの種類のイベントItemChangedします。When used in a BindingList<T>, a business object should implement the INotifyPropertyChanged interface and the BindingList`1 will convert PropertyChanged events to ListChanged events of type ItemChanged.

    注意

    変更の通知をバインドされているクライアントとデータ間のバインドで発生ソースにバインドされたデータ ソースの種類を実装するか、 INotifyPropertyChanged (推奨) インターフェイスを提供できますpropertyName Changedバインドの型がイベントには、両方を行うことはできません。For change notification to occur in a binding between a bound client and a data source your bound data-source type should either implement the INotifyPropertyChanged interface (preferred) or you can provide propertyNameChanged events for the bound type, but you shouldn't do both.

コンポーネント作成者が実装するインターフェイスInterfaces for Implementation by Component Authors

以下のインターフェイスは、Windows フォーム データ バインディング エンジンが使用するように設計されています。The following interfaces are designed for consumption by the Windows Forms data-binding engine:

関連項目See also