BindingSource クラス

定義

フォームのデータ ソースをカプセル化します。

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
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
[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")]
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")>]
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
[<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
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitialize, ISupportInitializeNotification, ITypedList
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, 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 != 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;
        }
    }
}
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 フォームコントロールとデータソース間で通貨管理、変更通知、およびその他のサービスを提供することにより、フォーム上のコントロールをデータにバインドしやすくします。 これは BindingSource 、プロパティを使用してデータソースにコンポーネントをアタッチすることで実現され DataSource ます。 複雑なバインドのシナリオでは、必要に応じて、 DataMember プロパティをデータソース内の特定の列またはリストに設定できます。 次に、コントロールをにバインドし BindingSource ます。 さらに、データとの対話はすべて、コンポーネントを呼び出すことで実現され BindingSource ます。 でバインドプロセスを簡略化する方法の例につい BindingSource ては、「方法: Windows フォームコントロールを DBNull データベース値にバインドする」および「方法: データバインドで発生するエラーと例外を処理する」を参照してください。 データソースのナビゲーションと更新は、、、などのメソッドを使用して行い MoveNext MoveLast Remove ます。 並べ替えやフィルター処理などの操作は、プロパティとプロパティを使用して処理され Sort Filter ます。 での並べ替えとフィルター処理の使用方法の詳細につい BindingSource ては、「方法: Windows フォーム BindingSource コンポーネントを使用して ADO.NET データを並べ替えてフィルター処理する」を参照してください。

さらに、 BindingSource コンポーネントは厳密に型指定されたデータソースとして機能することができます。 通常、基になるデータソースの型は、次のいずれかのメカニズムによって修正されます。

  • Addコンポーネントに項目を追加するには、メソッドを使用し BindingSource ます。

  • プロパティを DataSource リスト、単一オブジェクト、または型に設定します。

これらのメカニズムはどちらも、厳密に型指定されたリストを作成します。 を使用して型にバインドする方法の詳細につい BindingSource ては、「方法: Windows フォームコントロールを型にバインドする」を参照してください。 また、を使用し BindingSource て、コントロールをファクトリオブジェクトにバインドすることもできます。 これを行う方法の詳細については、「方法: Windows フォームコントロールをファクトリオブジェクトにバインドする」を参照してください。

注意

BindingSource 単純なデータソースと複合データソースの両方を処理するので、用語の問題が発生します。 このクラスのドキュメントでは、用語 リスト はホストされるデータソース内のデータコレクションを指し、 item は1つの要素を表します。 複合データソースに関連付けられている機能について説明する場合は、同等の用語の テーブル が使用されます。

BindingSource 基になるデータにアクセスするためのメンバーを提供します。 現在の項目は、プロパティを使用して取得でき Current ます。また、プロパティを使用してリスト全体を取得でき List ます。 編集操作は、、、、およびの各メソッドを通じて、現在の項目でサポートされてい Current RemoveCurrent EndEdit CancelEdit Add AddNew ます。 通貨管理は、基になるすべてのデータソースの種類に対して自動的に処理されますが、このクラスは、 CurrentItemChanged カスタマイズを可能にするやなどの多数のイベントを公開し DataSourceChanged ます。

コンポーネントにバインドされているデータソースは、クラスを使用して BindingSource 移動および管理することもできます。このクラスには、 BindingNavigator リスト内の項目を移動するための VCR と同様のユーザーインターフェイス (UI) が用意されています。 BindingNavigatorは任意のデータソースにバインドできますが、プロパティを使用してコンポーネントと統合するように設計されてい BindingSource BindingNavigator.BindingSource ます。

クラスの既定のプロパティ BindingSourceDataSource です。 既定のイベントは CurrentChanged です。

注意事項

クラスのメンバーの多くは、 BindingSource プロパティによって表される基になるリストを操作し、その List 操作を基になるリストに単に参照します。 したがって、 BindingSource がのカスタム実装にバインドされている場合、 IList これらのメンバーの正確な動作は、クラスのドキュメントで説明されている動作とは異なる場合があります。 たとえば、メソッドはを RemoveAt 呼び出し IList.RemoveAt ます。 このドキュメントでは、 BindingSource RemoveAt RemoveAt 基になるのメソッドが正しく実装されていることを理解したうえで、メソッドについて説明し IList ます。

コンストラクター

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

ComponentISite を取得または設定します。

(継承元 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)

IEnumerableIQueryable に変換します。

適用対象

こちらもご覧ください