この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 |
訳文
原文
|
BindingSource クラス
フォームのデータ ソースをカプセル化します。
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.BindingSource
アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)
BindingSource 型で公開されるメンバーは以下のとおりです。
| 名前 | 説明 | |
|---|---|---|
|
BindingSource() | BindingSource クラスの新しいインスタンスを既定のプロパティ値で初期化します。 |
|
BindingSource(IContainer) | BindingSource クラスの新しいインスタンスを初期化し、その BindingSource を指定したコンテナーに追加します。 |
|
BindingSource(Object, String) | データ ソースとデータ メンバーを指定して、BindingSource クラスの新しいインスタンスを初期化します。 |
| 名前 | 説明 | |
|---|---|---|
|
AllowEdit | 基になるリスト内の項目を編集できるかどうかを示す値を取得します。 |
|
AllowNew | AddNew メソッドを使用してリストに項目を追加できるかどうかを示す値を取得または設定します。 |
|
AllowRemove | 基になるリストから項目を削除できるかどうかを示す値を取得します。 |
|
CanRaiseEvents | コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。 (Component から継承されます。) |
|
Container | Component を格納している IContainer を取得します。 (Component から継承されます。) |
|
Count | 現在の Filter 値を考慮して、基になるリストの項目の合計数を取得します。 |
|
CurrencyManager | この BindingSource に関連付けられた CurrencyManager を取得します。 |
|
Current | リスト内の現在の項目を取得します。 |
|
DataMember | コネクタの現在のバインド先であるデータ ソースの特定のリストを取得または設定します。 |
|
DataSource | コネクタのバインド先であるデータ ソースを取得または設定します。 |
|
DesignMode | Component が現在デザイン モードかどうかを示す値を取得します。 (Component から継承されます。) |
|
Events | Component に結び付けられているイベント ハンドラーのリストを取得します。 (Component から継承されます。) |
|
Filter | 表示する行のフィルター処理に使用する式を取得または設定します。 |
|
IsBindingSuspended | リストのバインディングが中断されているかどうかを示す値を取得します。 |
|
IsFixedSize | 基になるリストが固定サイズかどうかを示す値を取得します。 |
|
IsReadOnly | 基になるリストが読み取り専用かどうかを示す値を取得します。 |
|
IsSorted | 基底のリストの項目が並べ替え済みかどうかを示す値を取得します。 |
|
IsSynchronized | コレクションへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。 |
|
Item | 指定したインデックスにあるリスト要素を取得または設定します。 |
|
List | コネクタのバインド先であるリストを取得します。 |
|
Position | 基底のリストにおける現在の項目のインデックスを取得または設定します。 |
|
RaiseListChangedEvents | ListChanged イベントを発生させるかどうかを示す値を取得または設定します。 |
|
Site | Component の ISite を取得または設定します。 (Component から継承されます。) |
|
Sort | 並べ替えに使用する列名と、データ ソースで行を表示するときの並べ替え順序を取得または設定します。 |
|
SortDescriptions | データ ソースに適用される並べ替えに関する説明のコレクションを取得します。 |
|
SortDirection | リスト項目の並べ替え方向を取得します。 |
|
SortProperty | インフラストラクチャ。 リストの並べ替えに使用されている PropertyDescriptor を取得します。 |
|
SupportsAdvancedSorting | データ ソースが複数列の並べ替えをサポートしているかどうかを示す値を取得します。 |
|
SupportsChangeNotification | データ ソースが変更通知をサポートしているかどうかを示す値を取得します。 |
|
SupportsFiltering | データ ソースがフィルター処理をサポートしているかどうかを示す値を取得します。 |
|
SupportsSearching | データ ソースが、Find メソッドを使用した検索をサポートしているかどうかを示す値を取得します。 |
|
SupportsSorting | データ ソースが並べ替えをサポートしているかどうかを示す値を取得します。 |
|
SyncRoot | 基になるリストへのアクセスを同期するために使用できるオブジェクトを取得します。 |
| 名前 | 説明 | |
|---|---|---|
|
Add | 既存の項目を内部リストに追加します。 |
|
AddNew | 基になるリストに新しい項目を追加します。 |
|
ApplySort(ListSortDescriptionCollection) | 指定された並べ替えに関する説明に基づいて、データ ソースを並べ替えます。 |
|
ApplySort(PropertyDescriptor, ListSortDirection) | 指定されたプロパティ記述子と並べ替え方向を使用して、データ ソースを並べ替えます。 |
|
CancelEdit | 現在の編集操作をキャンセルします。 |
|
Clear | リストからすべての要素を削除します。 |
|
Contains | オブジェクトがリストの項目であるかどうか判断します。 |
|
CopyTo | 指定したインデックスを開始位置として、指定した配列に List の内容をコピーします。 |
|
CreateObjRef | リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。) |
|
Dispose() | Component によって使用されているすべてのリソースを解放します。 (Component から継承されます。) |
|
Dispose(Boolean) | BindingSource によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。 (Component.Dispose(Boolean) をオーバーライドします。) |
|
EndEdit | 基底のデータ ソースに保留中の変更を適用します。 |
|
Equals(Object) | 指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。) |
|
Finalize | Component がガベージ コレクションによってクリアされる前に、アンマネージ リソースを解放し、その他のクリーンアップ操作を実行します。 (Component から継承されます。) |
|
Find(PropertyDescriptor, Object) | 指定したプロパティ記述子を持つ項目のインデックスを検索します。 |
|
Find(String, Object) | 指定した名前のプロパティと値を持つリスト内の項目のインデックスを返します。 |
|
GetEnumerator | List の列挙子を取得します。 |
|
GetHashCode | 特定の型のハッシュ関数として機能します。 (Object から継承されます。) |
|
GetItemProperties | データ ソースのリスト型について、バインド可能なプロパティを表す PropertyDescriptor オブジェクトの配列を取得します。 |
|
GetLifetimeService | 対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。) |
|
GetListName | バインディングのためのデータを提供するリストの名前を取得します。 |
|
GetRelatedCurrencyManager | 指定されたデータ メンバーに関連付けられた CurrencyManager を取得します。 |
|
GetService | Component またはその Container で提供されるサービスを表すオブジェクトを返します。 (Component から継承されます。) |
|
GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
|
IndexOf | 指定したオブジェクトを検索し、リスト全体でそのオブジェクトが最初に見つかった位置のインデックスを返します。 |
|
InitializeLifetimeService | 対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。) |
|
Insert | リスト内の指定したインデックスに項目を挿入します。 |
|
MemberwiseClone() | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
|
MemberwiseClone(Boolean) | 現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (MarshalByRefObject から継承されます。) |
|
MoveFirst | リストの最初の項目に移動します。 |
|
MoveLast | リストの最後の項目に移動します。 |
|
MoveNext | リストの次の項目に移動します。 |
|
MovePrevious | リストの前の項目に移動します。 |
|
OnAddingNew | AddingNew イベントを発生させます。 |
|
OnBindingComplete | BindingComplete イベントを発生させます。 |
|
OnCurrentChanged | CurrentChanged イベントを発生させます。 |
|
OnCurrentItemChanged | CurrentItemChanged イベントを発生させます。 |
|
OnDataError | DataError イベントを発生させます。 |
|
OnDataMemberChanged | DataMemberChanged イベントを発生させます。 |
|
OnDataSourceChanged | DataSourceChanged イベントを発生させます。 |
|
OnListChanged | ListChanged イベントを発生させます。 |
|
OnPositionChanged | PositionChanged イベントを発生させます。 |
|
Remove | 指定した項目をリストから削除します。 |
|
RemoveAt | リスト内の指定したインデックスにある項目を削除します。 |
|
RemoveCurrent | 現在の項目をリストから削除します。 |
|
RemoveFilter | BindingSource に関連付けられているフィルターを削除します。 |
|
RemoveSort | BindingSource に関連付けられている並べ替えを削除します。 |
|
ResetAllowNew | インフラストラクチャ。 AllowNew プロパティを再初期化します。 |
|
ResetBindings | BindingSource にバインドされたコントロールに対し、リスト内のすべての項目を再度読み込んで表示値を更新するよう通知します。 |
|
ResetCurrentItem | BindingSource にバインドされたコントロールに対し、現在選択されている項目を再度読み込んで表示値を更新するよう通知します。 |
|
ResetItem | BindingSource にバインドされたコントロールに対し、指定したインデックスにある項目を再度読み込んで表示値を更新するよう通知します。 |
|
ResumeBinding | データ バインディングを再開します。 |
|
SuspendBinding | データ バインディングに伴う変更によるバインド データ ソースの更新を中断します。 |
|
ToString | Component の名前を格納している String を返します (存在する場合)。 このメソッドはオーバーライドできません。 (Component から継承されます。) |
| 名前 | 説明 | |
|---|---|---|
|
AddingNew | 項目が基底のリストに追加される前に発生します。 |
|
BindingComplete | すべてのクライアントがこの BindingSource にバインドされたときに発生します。 |
|
CurrentChanged | 現在バインドされている項目が変更されたときに発生します。 |
|
CurrentItemChanged | Current プロパティのプロパティ値が変更されたときに発生します。 |
|
DataError | 同時実行に関する例外が BindingSource によって表示されずに処理された場合に発生します。 |
|
DataMemberChanged | DataMember プロパティの値が変更されたときに発生します。 |
|
DataSourceChanged | DataSource プロパティの値が変更されたときに発生します。 |
|
Disposed | Dispose メソッドの呼び出しによってコンポーネントが破棄されると発生します。 (Component から継承されます。) |
|
ListChanged | 基底のリストまたはリスト内の項目が変更されたときに発生します。 |
|
PositionChanged | Position プロパティの値が変更された後に発生します。 |
| 名前 | 説明 | |
|---|---|---|
|
AsParallel | クエリの並列化を有効にします。 (ParallelEnumerable によって定義されています。) |
|
AsQueryable | IEnumerable を IQueryable に変換します。 (Queryable によって定義されています。) |
|
Cast<TResult> | IEnumerable の要素を、指定した型に変換します。 (Enumerable によって定義されています。) |
|
OfType<TResult> | 指定された型に基づいて IEnumerable の要素をフィルター処理します。 (Enumerable によって定義されています。) |
| 名前 | 説明 | |
|---|---|---|
|
IBindingList.AddIndex | 検索に使用されるインデックスに PropertyDescriptor を追加します。 |
|
IBindingList.RemoveIndex | 検索に使用されるインデックスから System.ComponentModel.PropertyDescriptor を削除します。 |
|
ICancelAddNew.CancelNew | 保留中の新しい項目をコレクションから破棄します。 |
|
ICancelAddNew.EndNew | 保留中の新しい項目をコレクションにコミットします。 |
|
ISupportInitialize.BeginInit | 初期化の開始を通知するシグナルを BindingSource に送信します。 |
|
ISupportInitialize.EndInit | 初期化の完了を通知するシグナルを BindingSource に送信します。 |
|
ISupportInitializeNotification.Initialized | BindingSource が初期化されるときに発生します。 |
|
ISupportInitializeNotification.IsInitialized | BindingSource が初期化されているかどうかを示す値を取得します。 |
BindingSource コンポーネントは、多くの目的を果たします。 1 つは、同時実行の管理、変更通知、およびその他のサービスを Windows フォーム コントロールとデータ ソース間に提供することにより、フォーム上のコントロールからデータへのバインディングを簡素化することです。 このためには、DataSource プロパティを使用して BindingSource コンポーネントをデータ ソースにアタッチします。 複合バインディングのシナリオでは、DataMember プロパティをデータ ソース内の特定の列またはリストに設定することもできます。 その後、コントロールを BindingSource にバインドします。 以降のデータとの対話は、すべて BindingSource コンポーネントを呼び出すことによって実行します。 BindingSource によってバインディング処理を単純化する方法を示す例については、「方法 : Windows フォーム コントロールを DBNull データベース値にバインドする」および「方法 : データ バインドで発生するエラーと例外を処理する」を参照してください。 データ ソースの移動および更新を行うには、MoveNext、MoveLast、Remove などのメソッドを使用します。 並べ替えやフィルター処理などの操作は、Sort プロパティおよび Filter プロパティを使用して処理されます。 BindingSource による並べ替えとフィルター処理の使い方の詳細については、「方法 : Windows フォーム BindingSource コンポーネントで ADO.NET データを並べ替える/フィルター処理する」を参照してください。
また、BindingSource コンポーネントのもう 1 つの目的は、厳密に型指定されたデータ ソースとして機能することです。 基底のデータ ソースの型は、通常、次の機構のうちいずれかを通じて固定されます。
-
Add メソッドを使用して、項目を BindingSource コンポーネントに追加します。
-
DataSource プロパティを、リスト、単一のオブジェクト、または型に設定します。
どちらのメカニズムでも、厳密に型指定されたリストが作成されます。 BindingSource を使用して型にバインドする方法については、「方法 : Windows フォーム コントロールを型にバインドする」を参照してください。 また、BindingSource を使用して、コントロールをファクトリ オブジェクトにバインドすることもできます。 この手順の詳細については、「方法 : Windows フォーム コントロールをファクトリ オブジェクトにバインドする」を参照してください。
メモ
|
|---|
|
BindingSource は、単純データ ソースと複合データ ソースの両方を処理するので、用語上の問題が発生します。 このクラスのドキュメントにおいて、リストという用語は、ホストされているデータ ソース内のデータのコレクションを指し、項目は、単一の要素を指すこととします。 複合データ ソースの関連機能について説明するときは、同じ意味でテーブルおよび行という用語を使用します。 |
BindingSource には、基底のデータにアクセスするためのメンバーが用意されています。 現在の項目を取得する場合は Current プロパティを使用し、リスト全体を取得する場合は List プロパティを使用します。 現在の項目の編集操作は、Current プロパティと、RemoveCurrent、EndEdit、CancelEdit、および Add の各メソッド、さらには AddNew メソッドを通じてサポートされています。 同時実行の管理は、基底のデータ ソースのすべての型について自動的に処理されますが、このクラスでは、CurrentItemChanged や DataSourceChanged などいくつかのイベントが公開されており、これによってカスタマイズが可能です。
BindingSource コンポーネントにバインドされたデータ ソースは、BindingNavigator クラスを通じてアクセスおよび管理することもできます。このクラスでは、ビデオ カセット レコーダー形式のユーザー インターフェイス (UI) を使用してリスト内の項目間を移動できます。 BindingNavigator は任意のデータ ソースにバインドできますが、BindingNavigator.BindingSource プロパティを通じて BindingSource コンポーネントと統合することを前提にデザインされています。
BindingSource クラスの既定のプロパティは DataSource です。 既定のイベントは CurrentChanged です。
注意
|
|---|
|
BindingSource クラスの多くのメンバーは、List プロパティで表される基底のリストで機能し、その操作を基底のリストに委託するだけです。 このため、BindingSource を IList のカスタム実装とバインドした場合、これらのメンバーの動作は、クラスのドキュメントに記載されている動作と厳密には異なる場合があります。 たとえば、RemoveAt メソッドは、IList.RemoveAt を呼び出します。 BindingSource のドキュメントにおける RemoveAt メソッドの説明は、基になる IList の RemoveAt メソッドが正しく実装されていることを前提としています。 |
BindingSource に ListBox をバインドするコード例を次に示します。 BindingSource が、フォント一覧を保持する BindingList<T> にバインドされます。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Text; using System.Windows.Forms; namespace BindingSourceExamples { public class Form1 : Form { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } public Form1() { this.Load += new EventHandler(Form1_Load); } private TextBox textBox1; private Button button1; private ListBox listBox1; private BindingSource binding1; void Form1_Load(object sender, EventArgs e) { listBox1 = new ListBox(); textBox1 = new TextBox(); binding1 = new BindingSource(); button1 = new Button(); listBox1.Location = new Point(140, 25); listBox1.Size = new Size(123, 160); textBox1.Location = new Point(23, 70); textBox1.Size = new Size(100, 20); textBox1.Text = "Wingdings"; button1.Location = new Point(23, 25); button1.Size = new Size(75, 23); button1.Text = "Search"; button1.Click += new EventHandler(this.button1_Click); this.ClientSize = new Size(292, 266); this.Controls.Add(this.button1); this.Controls.Add(this.textBox1); this.Controls.Add(this.listBox1); MyFontList fonts = new MyFontList(); for (int i = 0; i < FontFamily.Families.Length; i++) { if (FontFamily.Families[i].IsStyleAvailable(FontStyle.Regular)) fonts.Add(new Font(FontFamily.Families[i], 11.0F, FontStyle.Regular)); } binding1.DataSource = fonts; listBox1.DataSource = binding1; listBox1.DisplayMember = "Name"; } private void button1_Click(object sender, EventArgs e) { if (binding1.SupportsSearching != true) MessageBox.Show("Cannot search the list."); else { int foundIndex = binding1.Find("Name", textBox1.Text); if (foundIndex > -1) listBox1.SelectedIndex = foundIndex; else MessageBox.Show("Font was not found."); } } } public class MyFontList : BindingList<Font> { protected override bool SupportsSearchingCore { get { return true; } } protected override int FindCore(PropertyDescriptor prop, object key) { // Ignore the prop value and search by family name. for (int i = 0; i < Count; ++i) { if (Items[i].FontFamily.Name.ToLower() == ((string)key).ToLower()) return i; } return -1; } } }
Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2
.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
メモ
注意