この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

IBindingList インターフェイス

 

公開日: 2016年10月

データ ソースにバインドする場合は、複合型および単純の両方のシナリオをサポートするために必要な機能を提供します。

名前空間:   System.ComponentModel
アセンブリ:  System (System.dll 内)

public interface IBindingList : IList, ICollection, IEnumerable

名前説明
System_CAPS_pubpropertyAllowEdit

リスト内の項目を更新するかどうかを取得します。

System_CAPS_pubpropertyAllowNew

使用してリストに項目を追加するかどうかを取得 AddNewします。

System_CAPS_pubpropertyAllowRemove

取得、リストから項目を削除するかどうかを使用して Remove または RemoveAtです。

System_CAPS_pubpropertyCount

ICollection に格納されている要素の数を取得します。(ICollection から継承されます。)

System_CAPS_pubpropertyIsFixedSize

IList が固定サイズかどうかを示す値を取得します。(IList から継承されます。)

System_CAPS_pubpropertyIsReadOnly

IList が読み取り専用かどうかを示す値を取得します。(IList から継承されます。)

System_CAPS_pubpropertyIsSorted

一覧の項目を並べ替えるかどうかを取得します。

System_CAPS_pubpropertyIsSynchronized

ICollection へのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。(ICollection から継承されます。)

System_CAPS_pubpropertyItem[Int32]

指定したインデックスにある要素を取得または設定します。(IList から継承されます。)

System_CAPS_pubpropertySortDirection

並べ替えの方向を取得します。

System_CAPS_pubpropertySortProperty

取得、 PropertyDescriptor 並べ替えに使用されています。

System_CAPS_pubpropertySupportsChangeNotification

取得するかどうか、 ListChanged イベントのリストまたはリスト内の項目が変更されたときに発生します。

System_CAPS_pubpropertySupportsSearching

リストを使用して検索をサポートしているかどうかを取得、 Find メソッドです。

System_CAPS_pubpropertySupportsSorting

リストが並べ替えをサポートするかどうかを取得します。

System_CAPS_pubpropertySyncRoot

ICollection へのアクセスを同期するために使用できるオブジェクトを取得します。(ICollection から継承されます。)

名前説明
System_CAPS_pubmethodAdd(Object)

IList に項目を追加します。(IList から継承されます。)

System_CAPS_pubmethodAddIndex(PropertyDescriptor)

追加、 PropertyDescriptor 検索に使用されるインデックスにします。

System_CAPS_pubmethodAddNew()

新しい項目を一覧に追加します。

System_CAPS_pubmethodApplySort(PropertyDescriptor, ListSortDirection)

に基づいてリストを並べ替えたりしたため、 PropertyDescriptorListSortDirectionです。

System_CAPS_pubmethodClear()

IList からすべての項目を削除します。(IList から継承されます。)

System_CAPS_pubmethodContains(Object)

IList に特定の値が格納されているかどうかを判断します。(IList から継承されます。)

System_CAPS_pubmethodCopyTo(Array, Int32)

ICollection の要素を Array にコピーします。Array の特定のインデックスからコピーが開始されます。(ICollection から継承されます。)

System_CAPS_pubmethodFind(PropertyDescriptor, Object)

持つ行のインデックスを返す、指定された PropertyDescriptorします。

System_CAPS_pubmethodGetEnumerator()

コレクションを反復処理する列挙子を返します。(IEnumerable から継承されます。)

System_CAPS_pubmethodIndexOf(Object)

IList 内の特定の項目のインデックスを確認します。(IList から継承されます。)

System_CAPS_pubmethodInsert(Int32, Object)

指定したインデックスの IList に項目を挿入します。(IList から継承されます。)

System_CAPS_pubmethodRemove(Object)

特定のオブジェクトで最初に出現したものを IList から削除します。(IList から継承されます。)

System_CAPS_pubmethodRemoveAt(Int32)

指定したインデックスにある IList 項目を削除します。(IList から継承されます。)

System_CAPS_pubmethodRemoveIndex(PropertyDescriptor)

削除、 PropertyDescriptor 検索に使用されるインデックスからです。

System_CAPS_pubmethodRemoveSort()

使用して適用並べ替え削除します ApplySortします。

名前説明
System_CAPS_pubeventListChanged

リストまたはリスト内の項目が変更された場合に発生します。

名前説明
System_CAPS_pubmethodAsParallel()

オーバーロードされます。クエリの並列化を有効にします。(ParallelEnumerable によって定義されています。)

System_CAPS_pubmethodAsQueryable()

オーバーロードされます。変換、 IEnumerable に、 IQueryableです。(Queryable によって定義されています。)

System_CAPS_pubmethodCast<TResult>()

要素をキャスト、 IEnumerable 指定した型にします。(Enumerable によって定義されています。)

System_CAPS_pubmethodOfType<TResult>()

要素をフィルター処理、 IEnumerable 、指定した型に基づいています。(Enumerable によって定義されています。)

このインターフェイスは、 DataView クラスです。 メソッドの実装では、そのメソッドの実装と同じ動作が発生する必要があります、 DataView クラスです。

呼び出すと、 ApplySort または RemoveSort 発生させる方法、 ListChanged イベントと、 Reset 列挙します。

呼び出すと、 AddNew 発生させるメソッドを ListChanged イベントと、 ItemAdded 列挙型の適切なインデックスを実行します。 状態で、追加した行は、どこ、esc キーを押して、 DataGridView コントロールは、新しい行を削除することができます。 させると、 ListChanged イベントと、 ItemAdded 列挙この行で 2 回目は、項目が"new"の状態ではない行になっていることを示します。

アイテムや呼び出しを削除すると、 CancelEdit メソッド新しい行を (を実装する行のかどうかは IEditableObject)、発生させる、 ListChanged イベントと、 ItemDeleted 列挙型の適切なインデックスを実行します。

次の例の簡単な実装を提供する、 IBindingList インターフェイスです。 CustomerList クラスは、一覧に顧客情報を格納します。 この例を使用している、 Customer クラスの例で使用されている、 IEditableObject クラスです。

public class CustomersList :  CollectionBase, IBindingList
{

	private ListChangedEventArgs resetEvent = new ListChangedEventArgs(ListChangedType.Reset, -1);
	private ListChangedEventHandler onListChanged;

	public void LoadCustomers() 
	{
		IList l = (IList)this;
		l.Add(ReadCustomer1());
		l.Add(ReadCustomer2());
		OnListChanged(resetEvent);
	}

	public Customer this[int index] 
	{
		get 
		{
			return (Customer)(List[index]);
		}
		set 
		{
			List[index] = value;
		}
	}

	public int Add (Customer value) 
	{
		return List.Add(value);
	}

	public Customer AddNew() 
	{
		return (Customer)((IBindingList)this).AddNew();
	}

	public void Remove (Customer value) 
	{
		List.Remove(value);
	}


	protected virtual void OnListChanged(ListChangedEventArgs ev) 
	{
		if (onListChanged != null) 
		{
			onListChanged(this, ev);
		}
	}


	protected override void OnClear() 
	{
		foreach (Customer c in List) 
		{
			c.Parent = null;
		}
	}

	protected override void OnClearComplete() 
	{
		OnListChanged(resetEvent);
	}

	protected override void OnInsertComplete(int index, object value) 
	{
		Customer c = (Customer)value;
		c.Parent = this;
		OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
	}

	protected override void OnRemoveComplete(int index, object value) 
	{
		Customer c = (Customer)value;
		c.Parent = this;
		OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
	}

	protected override void OnSetComplete(int index, object oldValue, object newValue) 
	{
		if (oldValue != newValue) 
		{

			Customer oldcust = (Customer)oldValue;
			Customer newcust = (Customer)newValue;

			oldcust.Parent = null;
			newcust.Parent = this;


			OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
		}
	}

	// Called by Customer when it changes.
	internal void CustomerChanged(Customer cust) 
	{

		int index = List.IndexOf(cust);

		OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, index));
	}


	// Implements IBindingList.
	bool IBindingList.AllowEdit 
	{ 
		get { return true ; }
	}

	bool IBindingList.AllowNew 
	{ 
		get { return true ; }
	}

	bool IBindingList.AllowRemove 
	{ 
		get { return true ; }
	}

	bool IBindingList.SupportsChangeNotification 
	{ 
		get { return true ; }
	}

	bool IBindingList.SupportsSearching 
	{ 
		get { return false ; }
	}

	bool IBindingList.SupportsSorting 
	{ 
		get { return false ; }
	}


	// Events.
	public event ListChangedEventHandler ListChanged 
	{
		add 
		{
			onListChanged += value;
		}
		remove 
		{
			onListChanged -= value;
		}
	}

	// Methods.
	object IBindingList.AddNew() 
	{
		Customer c = new Customer(this.Count.ToString());
		List.Add(c);
		return c;
	}


	// Unsupported properties.
	bool IBindingList.IsSorted 
	{ 
		get { throw new NotSupportedException(); }
	}

	ListSortDirection IBindingList.SortDirection 
	{ 
		get { throw new NotSupportedException(); }
	}


	PropertyDescriptor IBindingList.SortProperty 
	{ 
		get { throw new NotSupportedException(); }
	}


	// Unsupported Methods.
	void IBindingList.AddIndex(PropertyDescriptor property) 
	{
		throw new NotSupportedException(); 
	}

	void IBindingList.ApplySort(PropertyDescriptor property, ListSortDirection direction) 
	{
		throw new NotSupportedException(); 
	}

	int IBindingList.Find(PropertyDescriptor property, object key) 
	{
		throw new NotSupportedException(); 
	}

	void IBindingList.RemoveIndex(PropertyDescriptor property) 
	{
		throw new NotSupportedException(); 
	}

	void IBindingList.RemoveSort() 
	{
		throw new NotSupportedException(); 
	}

	// Worker functions to populate the list with data.
	private static Customer ReadCustomer1() 
	{
		Customer cust = new Customer("536-45-1245");
		cust.FirstName = "Jo";
		cust.LastName = "Brown";
		return cust;
	}

	private static Customer ReadCustomer2() 
	{
		Customer cust = new Customer("246-12-5645");
		cust.FirstName = "Robert";
		cust.LastName = "Brown";
		return cust;
	}
}

.NET Framework
1.1 以降で使用可能
トップに戻る
表示: