この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文
このトピックはまだ評価されていません - このトピックを評価する

BindingSource クラス

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

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Windows.Forms.BindingSource

名前空間:  System.Windows.Forms
アセンブリ:  System.Windows.Forms (System.Windows.Forms.dll 内)
[ComplexBindingPropertiesAttribute("DataSource", "DataMember")]
public class BindingSource : Component, 
	IBindingListView, IBindingList, IList, ICollection, IEnumerable, 
	ITypedList, ICancelAddNew, ISupportInitializeNotification, ISupportInitialize, ICurrencyManagerProvider

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 ComponentISite を取得または設定します。 (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 プロパティの値が変更された後に発生します。
このページのトップへ
  名前 説明
パブリック Extension メソッド AsParallel クエリの並列化を有効にします。 (ParallelEnumerable によって定義されています。)
パブリック Extension メソッド AsQueryable IEnumerableIQueryable に変換します。 (Queryable によって定義されています。)
パブリック Extension メソッド Cast<TResult> IEnumerable の要素を、指定した型に変換します。 (Enumerable によって定義されています。)
パブリック Extension メソッド 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 データベース値にバインドする」および「方法 : データ バインドで発生するエラーと例外を処理する」を参照してください。 データ ソースの移動および更新を行うには、MoveNextMoveLastRemove などのメソッドを使用します。 並べ替えやフィルター処理などの操作は、Sort プロパティおよび Filter プロパティを使用して処理されます。 BindingSource による並べ替えとフィルター処理の使い方の詳細については、「方法 : Windows フォーム BindingSource コンポーネントで ADO.NET データを並べ替える/フィルター処理する」を参照してください。

また、BindingSource コンポーネントのもう 1 つの目的は、厳密に型指定されたデータ ソースとして機能することです。 基底のデータ ソースの型は、通常、次の機構のうちいずれかを通じて固定されます。

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

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

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

メモ メモ

BindingSource は、単純データ ソースと複合データ ソースの両方を処理するので、用語上の問題が発生します。 このクラスのドキュメントにおいて、リストという用語は、ホストされているデータ ソース内のデータのコレクションを指し、項目は、単一の要素を指すこととします。 複合データ ソースの関連機能について説明するときは、同じ意味でテーブルおよびという用語を使用します。

BindingSource には、基底のデータにアクセスするためのメンバーが用意されています。 現在の項目を取得する場合は Current プロパティを使用し、リスト全体を取得する場合は List プロパティを使用します。 現在の項目の編集操作は、Current プロパティと、RemoveCurrentEndEditCancelEdit、および Add の各メソッド、さらには AddNew メソッドを通じてサポートされています。 同時実行の管理は、基底のデータ ソースのすべての型について自動的に処理されますが、このクラスでは、CurrentItemChangedDataSourceChanged などいくつかのイベントが公開されており、これによってカスタマイズが可能です。

BindingSource コンポーネントにバインドされたデータ ソースは、BindingNavigator クラスを通じてアクセスおよび管理することもできます。このクラスでは、ビデオ カセット レコーダー形式のユーザー インターフェイス (UI) を使用してリスト内の項目間を移動できます。 BindingNavigator は任意のデータ ソースにバインドできますが、BindingNavigator.BindingSource プロパティを通じて BindingSource コンポーネントと統合することを前提にデザインされています。

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

Caution メモ 注意

BindingSource クラスの多くのメンバーは、List プロパティで表される基底のリストで機能し、その操作を基底のリストに委託するだけです。 このため、BindingSourceIList のカスタム実装とバインドした場合、これらのメンバーの動作は、クラスのドキュメントに記載されている動作と厳密には異なる場合があります。 たとえば、RemoveAt メソッドは、IList.RemoveAt を呼び出します。 BindingSource のドキュメントにおける RemoveAt メソッドの説明は、基になる IListRemoveAt メソッドが正しく実装されていることを前提としています。

BindingSourceListBox をバインドするコード例を次に示します。 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;
        }


    }

}


.NET Framework

サポート対象: 4、3.5、3.0、2.0

.NET Framework Client Profile

サポート対象: 4、3.5 SP1

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 システム要件」を参照してください。
この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。
この情報は役に立ちましたか。
(残り 1500 文字)
コミュニティ コンテンツ 追加
注釈 FAQ