BindingSource クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
フォームのデータ ソースをカプセル化します。
public ref class BindingSource : System::ComponentModel::Component, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ICancelAddNew, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList, System::Windows::Forms::ICurrencyManagerProvider
public ref class BindingSource : System::ComponentModel::Component, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ICancelAddNew, System::ComponentModel::ISupportInitialize, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList, System::Windows::Forms::ICurrencyManagerProvider
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
public class BindingSource : System.ComponentModel.Component, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ICancelAddNew, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList, System.Windows.Forms.ICurrencyManagerProvider
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
public class BindingSource : System.ComponentModel.Component, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ICancelAddNew, System.ComponentModel.ISupportInitialize, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList, System.Windows.Forms.ICurrencyManagerProvider
[<System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>]
type BindingSource = class
inherit Component
interface IBindingListView
interface IBindingList
interface IList
interface ICollection
interface IEnumerable
interface ITypedList
interface ICancelAddNew
interface ISupportInitializeNotification
interface ISupportInitialize
interface ICurrencyManagerProvider
[<System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>]
type BindingSource = class
inherit Component
interface IBindingListView
interface ICollection
interface IEnumerable
interface IList
interface IBindingList
interface ITypedList
interface ICancelAddNew
interface ISupportInitializeNotification
interface ISupportInitialize
interface ICurrencyManagerProvider
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitializeNotification, ITypedList
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitialize, ISupportInitializeNotification, ITypedList
- 継承
- 属性
- 実装
例
次のコード例は、 ListBox へのバインドを BindingSource示しています。 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)
{
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;
}
}
}
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Public Class Form1
Inherits Form
<STAThread()> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
Public Sub New()
End Sub
Private textBox1 As TextBox
Private WithEvents button1 As Button
Private listBox1 As ListBox
Private components As IContainer
Private binding1 As BindingSource
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
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"
Me.ClientSize = New Size(292, 266)
Me.Controls.Add(Me.button1)
Me.Controls.Add(Me.textBox1)
Me.Controls.Add(Me.listBox1)
Dim fonts As New MyFontList()
Dim i As Integer
For i = 0 To FontFamily.Families.Length - 1
If FontFamily.Families(i).IsStyleAvailable(FontStyle.Regular) Then
fonts.Add(New Font(FontFamily.Families(i), 11.0F, FontStyle.Regular))
End If
Next i
binding1.DataSource = fonts
listBox1.DataSource = binding1
listBox1.DisplayMember = "Name"
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles button1.Click
If binding1.SupportsSearching <> True Then
MessageBox.Show("Cannot search the list.")
Else
Dim foundIndex As Integer = binding1.Find("Name", textBox1.Text)
If foundIndex > -1 Then
listBox1.SelectedIndex = foundIndex
Else
MessageBox.Show("Font was not found.")
End If
End If
End Sub
End Class
Public Class MyFontList
Inherits BindingList(Of Font)
Protected Overrides ReadOnly Property SupportsSearchingCore() As Boolean
Get
Return True
End Get
End Property
Protected Overrides Function FindCore(ByVal prop As PropertyDescriptor, _
ByVal key As Object) As Integer
' Ignore the prop value and search by family name.
Dim i As Integer
While i < Count
If Items(i).FontFamily.Name.ToLower() = CStr(key).ToLower() Then
Return i
End If
i += 1
End While
Return -1
End Function
End Class
注釈
コンポーネントは BindingSource 多くの目的を果たします。 まず、Windows フォーム コントロールとデータ ソースの間で通貨管理、変更通知、その他のサービスを提供することで、フォーム上のコントロールをデータにバインドすることが簡単になります。 これは、 プロパティを使用してDataSourceコンポーネントをBindingSourceデータ ソースにアタッチすることによって実現されます。 複雑なバインドシナリオでは、必要に応じて、 プロパティを DataMember データ ソース内の特定の列またはリストに設定できます。 次に、コントロールを にバインドします BindingSource。 データに対するそれ以上の操作はすべて、コンポーネントの呼び出しで BindingSource 行われます。 を使用してバインド プロセスを簡略化する方法BindingSourceの例については、「方法: Windows フォーム コントロールを DBNull データベース値にバインドする」および「方法: Databinding で発生するエラーと例外を処理する」を参照してください。 データ ソースのナビゲーションと更新は、 などのMoveNextMoveLastRemoveメソッドを使用して行われます。 並べ替えやフィルター処理などの操作は、 プロパティと Filter プロパティをSort使用して処理されます。 でBindingSource並べ替えとフィルター処理を使用する方法の詳細については、「How to: Sort and Filter ADO.NET Data with the Windows フォーム BindingSource Component」を参照してください。
さらに、コンポーネントは BindingSource 厳密に型指定されたデータ ソースとして機能できます。 通常、基になるデータ ソースの型は、次のいずれかのメカニズムによって固定されます。
コンポーネントに Add 項目を追加するには、 メソッドを BindingSource 使用します。
プロパティを DataSource リスト、単一のオブジェクト、または型に設定します。
これらのメカニズムはいずれも、厳密に型指定されたリストを作成します。 を使用BindingSourceして型にバインドする方法の詳細については、「方法: Windows フォーム コントロールを型にバインドする」を参照してください。 また、 を BindingSource 使用して、コントロールをファクトリ オブジェクトにバインドすることもできます。 これを行う方法の詳細については、「方法: Windows フォーム コントロールをファクトリ オブジェクトにバインドする」を参照してください。
Note
は BindingSource 単純なデータ ソースと複雑なデータ ソースの両方を処理するため、用語は問題になります。 このクラス ドキュメント内では、用語 リスト はホストされているデータ ソース内のデータ コレクションを参照し、 item は 1 つの要素を表します。 複雑なデータ ソースに関連付けられている機能について説明する場合は、 テーブル と 行 に相当する用語が使用されます。
BindingSource は、基になるデータにアクセスするためのメンバーを提供します。 現在の項目は、 プロパティを Current 使用して取得でき、 プロパティを使用してリスト全体を List 取得できます。 編集操作は、 メソッド、、および メソッドを使用してCurrent、現在の CancelEditAddRemoveCurrentEndEditAddNewアイテムでサポートされています。 通貨管理は、基になるすべてのデータ ソースの種類に対して自動的に処理されますが、このクラスは、 や DataSourceChangedなどCurrentItemChanged、カスタマイズを可能にする多数のイベントを公開します。
コンポーネントに BindingSource バインドされているデータ ソースは、 クラスを使用して BindingNavigator 移動および管理することもできます。これにより、リスト内の項目を移動するための VCR に似たユーザー インターフェイス (UI) が提供されます。 BindingNavigator任意のデータ ソースにバインドできますが、そのBindingNavigator.BindingSourceプロパティを使用してコンポーネントとBindingSource統合するように設計されています。
クラスの既定の BindingSource プロパティは です DataSource。 既定のイベントは です CurrentChanged。
注意事項
クラスのメンバーの BindingSource 多くは、 プロパティで表される基になるリストを List 操作し、その操作を基になるリストに参照するだけです。 したがって、 が のIListカスタム実装にバインドされている場合BindingSource、これらのメンバーの正確な動作は、クラス ドキュメントで説明されている動作とは異なる場合があります。 たとえば、 メソッドは を RemoveAt 呼び出します IList.RemoveAt。 このBindingSourceドキュメントでは、基になる IList のRemoveAtメソッドが正しく実装されていることをRemoveAt理解したメソッドについて説明します。
コンストラクター
BindingSource() |
BindingSource クラスの新しいインスタンスを既定のプロパティ値で初期化します。 |
BindingSource(IContainer) |
BindingSource クラスの新しいインスタンスを初期化し、その BindingSource を指定したコンテナーに追加します。 |
BindingSource(Object, String) |
データ ソースとデータ メンバーを指定して、BindingSource クラスの新しいインスタンスを初期化します。 |
プロパティ
AllowEdit |
基になるリスト内の項目を編集できるかどうかを示す値を取得します。 |
AllowNew |
AddNew() メソッドを使用してリストに項目を追加できるかどうかを示す値を取得または設定します。 |
AllowRemove |
基になるリストから項目を削除できるかどうかを示す値を取得します。 |
CanRaiseEvents |
コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。 (継承元 Component) |
Container |
IContainer を含む Component を取得します。 (継承元 Component) |
Count |
現在の Filter 値を考慮して、基になるリストの項目の合計数を取得します。 |
CurrencyManager |
この BindingSource に関連付けられた CurrencyManager を取得します。 |
Current |
リスト内の現在の項目を取得します。 |
DataMember |
コネクタの現在のバインド先であるデータ ソースの特定のリストを取得または設定します。 |
DataSource |
コネクタのバインド先であるデータ ソースを取得または設定します。 |
DesignMode |
Component が現在デザイン モードかどうかを示す値を取得します。 (継承元 Component) |
Events |
Component に結び付けられているイベント ハンドラーのリストを取得します。 (継承元 Component) |
Filter |
表示する行のフィルター処理に使用する式を取得または設定します。 |
IsBindingSuspended |
リストのバインディングが中断されているかどうかを示す値を取得します。 |
IsFixedSize |
基になるリストが固定サイズかどうかを示す値を取得します。 |
IsReadOnly |
基になるリストが読み取り専用かどうかを示す値を取得します。 |
IsSorted |
基底のリストの項目が並べ替え済みかどうかを示す値を取得します。 |
IsSynchronized |
コレクションへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。 |
Item[Int32] |
指定したインデックスにあるリスト要素を取得または設定します。 |
List |
コネクタのバインド先であるリストを取得します。 |
Position |
基底のリストにおける現在の項目のインデックスを取得または設定します。 |
RaiseListChangedEvents |
ListChanged イベントを発生させるかどうかを示す値を取得または設定します。 |
Site |
Component の ISite を取得または設定します。 (継承元 Component) |
Sort |
並べ替えに使用する列名と、データ ソースで行を表示するときの並べ替え順序を取得または設定します。 |
SortDescriptions |
データ ソースに適用される並べ替えに関する説明のコレクションを取得します。 |
SortDirection |
リスト項目の並べ替え方向を取得します。 |
SortProperty |
リストの並べ替えに使用されている PropertyDescriptor を取得します。 |
SupportsAdvancedSorting |
データ ソースが複数列の並べ替えをサポートしているかどうかを示す値を取得します。 |
SupportsChangeNotification |
データ ソースが変更通知をサポートしているかどうかを示す値を取得します。 |
SupportsFiltering |
データ ソースがフィルター処理をサポートしているかどうかを示す値を取得します。 |
SupportsSearching |
データ ソースが、Find(PropertyDescriptor, Object) メソッドを使用した検索をサポートしているかどうかを示す値を取得します。 |
SupportsSorting |
データ ソースが並べ替えをサポートしているかどうかを示す値を取得します。 |
SyncRoot |
基になるリストへのアクセスを同期するために使用できるオブジェクトを取得します。 |
メソッド
Add(Object) |
既存の項目を内部リストに追加します。 |
AddNew() |
基になるリストに新しい項目を追加します。 |
ApplySort(ListSortDescriptionCollection) |
指定された並べ替えに関する説明に基づいて、データ ソースを並べ替えます。 |
ApplySort(PropertyDescriptor, ListSortDirection) |
指定されたプロパティ記述子と並べ替え方向を使用して、データ ソースを並べ替えます。 |
CancelEdit() |
現在の編集操作をキャンセルします。 |
Clear() |
リストからすべての要素を削除します。 |
Contains(Object) |
オブジェクトがリストの項目であるかどうか判断します。 |
CopyTo(Array, Int32) |
指定したインデックスを開始位置として、指定した配列に List の内容をコピーします。 |
CreateObjRef(Type) |
リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (継承元 MarshalByRefObject) |
Dispose() |
Component によって使用されているすべてのリソースを解放します。 (継承元 Component) |
Dispose(Boolean) |
BindingSource によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。 |
EndEdit() |
基になるデータ ソースに保留中の変更を適用します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
Find(PropertyDescriptor, Object) |
指定したプロパティ記述子を持つ項目のインデックスを検索します。 |
Find(String, Object) |
指定した名前のプロパティと値を持つリスト内の項目のインデックスを返します。 |
GetEnumerator() |
List の列挙子を取得します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetItemProperties(PropertyDescriptor[]) |
データ ソースのリスト型について、バインド可能なプロパティを表す PropertyDescriptor オブジェクトの配列を取得します。 |
GetLifetimeService() |
古い.
対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
GetListName(PropertyDescriptor[]) |
バインディングのためのデータを提供するリストの名前を取得します。 |
GetRelatedCurrencyManager(String) |
指定されたデータ メンバーに関連付けられた CurrencyManager を取得します。 |
GetService(Type) |
Component またはその Container で提供されるサービスを表すオブジェクトを返します。 (継承元 Component) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
IndexOf(Object) |
指定したオブジェクトを検索し、リスト全体でそのオブジェクトが最初に見つかった位置のインデックスを返します。 |
InitializeLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
Insert(Int32, Object) |
リスト内の指定したインデックスに項目を挿入します。 |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
MoveFirst() |
リストの最初の項目に移動します。 |
MoveLast() |
リストの最後の項目に移動します。 |
MoveNext() |
リストの次の項目に移動します。 |
MovePrevious() |
リストの前の項目に移動します。 |
OnAddingNew(AddingNewEventArgs) |
AddingNew イベントを発生させます。 |
OnBindingComplete(BindingCompleteEventArgs) |
BindingComplete イベントを発生させます。 |
OnCurrentChanged(EventArgs) |
CurrentChanged イベントを発生させます。 |
OnCurrentItemChanged(EventArgs) |
CurrentItemChanged イベントを発生させます。 |
OnDataError(BindingManagerDataErrorEventArgs) |
DataError イベントを発生させます。 |
OnDataMemberChanged(EventArgs) |
DataMemberChanged イベントを発生させます。 |
OnDataSourceChanged(EventArgs) |
DataSourceChanged イベントを発生させます。 |
OnListChanged(ListChangedEventArgs) |
ListChanged イベントを発生させます。 |
OnPositionChanged(EventArgs) |
PositionChanged イベントを発生させます。 |
Remove(Object) |
指定した項目をリストから削除します。 |
RemoveAt(Int32) |
リスト内の指定したインデックスにある項目を削除します。 |
RemoveCurrent() |
リストから現在の項目を削除します。 |
RemoveFilter() |
BindingSource に関連付けられているフィルターを削除します。 |
RemoveSort() |
BindingSource に関連付けられている並べ替えを削除します。 |
ResetAllowNew() |
AllowNew プロパティを再初期化します。 |
ResetBindings(Boolean) |
BindingSource にバインドされたコントロールに対し、リスト内のすべての項目を再度読み込んで表示値を更新するよう通知します。 |
ResetCurrentItem() |
BindingSource にバインドされたコントロールに対し、現在選択されている項目を再度読み込んで表示値を更新するよう通知します。 |
ResetItem(Int32) |
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 プロパティの値が変更された後に発生します。 |
明示的なインターフェイスの実装
IBindingList.AddIndex(PropertyDescriptor) |
検索に使用されるインデックスに PropertyDescriptor を追加します。 |
IBindingList.RemoveIndex(PropertyDescriptor) |
検索に使用されるインデックスから PropertyDescriptor を削除します。 |
ICancelAddNew.CancelNew(Int32) |
保留中の新しい項目をコレクションから破棄します。 |
ICancelAddNew.EndNew(Int32) |
保留中の新しい項目をコレクションにコミットします。 |
ISupportInitialize.BeginInit() |
初期化の開始を通知するシグナルを BindingSource に送信します。 |
ISupportInitialize.EndInit() |
初期化の完了を通知するシグナルを BindingSource に送信します。 |
ISupportInitializeNotification.Initialized |
BindingSource が初期化されるときに発生します。 |
ISupportInitializeNotification.IsInitialized |
BindingSource が初期化されているかどうかを示す値を取得します。 |
拡張メソッド
Cast<TResult>(IEnumerable) |
IEnumerable の要素を、指定した型にキャストします。 |
OfType<TResult>(IEnumerable) |
指定された型に基づいて IEnumerable の要素をフィルター処理します。 |
AsParallel(IEnumerable) |
クエリの並列化を有効にします。 |
AsQueryable(IEnumerable) |
IEnumerable を IQueryable に変換します。 |
適用対象
こちらもご覧ください
.NET