次の方法で共有


BindingSource クラス

定義

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

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ドキュメントでは、基になる IListRemoveAtメソッドが正しく実装されていることを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

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 に変換します。

適用対象

こちらもご覧ください