BindingList<T> クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
データ バインディングをサポートするジェネリック コレクションを提供します。
generic <typename T>
public ref class BindingList : System::Collections::ObjectModel::Collection<T>, System::ComponentModel::IBindingList, System::ComponentModel::ICancelAddNew, System::ComponentModel::IRaiseItemChangedEvents
public class BindingList<T> : System.Collections.ObjectModel.Collection<T>, System.ComponentModel.IBindingList, System.ComponentModel.ICancelAddNew, System.ComponentModel.IRaiseItemChangedEvents
[System.Serializable]
public class BindingList<T> : System.Collections.ObjectModel.Collection<T>, System.ComponentModel.IBindingList, System.ComponentModel.ICancelAddNew, System.ComponentModel.IRaiseItemChangedEvents
type BindingList<'T> = class
inherit Collection<'T>
interface ICollection
interface IEnumerable
interface IList
interface IBindingList
interface ICancelAddNew
interface IRaiseItemChangedEvents
[<System.Serializable>]
type BindingList<'T> = class
inherit Collection<'T>
interface IBindingList
interface IList
interface ICollection
interface IEnumerable
interface ICancelAddNew
interface IRaiseItemChangedEvents
Public Class BindingList(Of T)
Inherits Collection(Of T)
Implements IBindingList, ICancelAddNew, IRaiseItemChangedEvents
型パラメーター
- T
リスト内の要素の型。
- 継承
- 属性
- 実装
例
次のコード例では、ビジネス オブジェクトを含む BindingList<T> コンポーネントへのバインドを示します。 これは、Main
メソッドを含む完全な例です。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace BindingListOfTExamples
{
public partial class Form1 : Form
{
private TextBox textBox2;
private ListBox listBox1;
private Button button1;
private TextBox textBox1;
Random randomNumber = new Random();
public Form1()
{
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.listBox1 = new System.Windows.Forms.ListBox();
this.button1 = new System.Windows.Forms.Button();
this.textBox1.Location = new System.Drawing.Point(169, 26);
this.textBox1.Size = new System.Drawing.Size(100, 20);
this.textBox1.Text = "Bracket";
this.textBox2.Location = new System.Drawing.Point(169, 57);
this.textBox2.ReadOnly = true;
this.textBox2.Size = new System.Drawing.Size(100, 20);
this.textBox2.Text = "4343";
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(12, 12);
this.listBox1.Size = new System.Drawing.Size(120, 95);
this.button1.Location = new System.Drawing.Point(180, 83);
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.Text = "Add New Item";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.button1);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Text = "Parts Form";
this.Load += new EventHandler(Form1_Load);
}
void Form1_Load(object sender, EventArgs e)
{
InitializeListOfParts();
listBox1.DataSource = listOfParts;
listBox1.DisplayMember = "PartName";
listOfParts.AddingNew += new AddingNewEventHandler(listOfParts_AddingNew);
listOfParts.ListChanged += new ListChangedEventHandler(listOfParts_ListChanged);
}
// Declare a new BindingListOfT with the Part business object.
BindingList<Part> listOfParts;
private void InitializeListOfParts()
{
// Create the new BindingList of Part type.
listOfParts = new BindingList<Part>();
// Allow new parts to be added, but not removed once committed.
listOfParts.AllowNew = true;
listOfParts.AllowRemove = false;
// Raise ListChanged events when new parts are added.
listOfParts.RaiseListChangedEvents = true;
// Do not allow parts to be edited.
listOfParts.AllowEdit = false;
// Add a couple of parts to the list.
listOfParts.Add(new Part("Widget", 1234));
listOfParts.Add(new Part("Gadget", 5647));
}
// Create a new part from the text in the two text boxes.
void listOfParts_AddingNew(object sender, AddingNewEventArgs e)
{
e.NewObject = new Part(textBox1.Text, int.Parse(textBox2.Text));
}
// Add the new part unless the part number contains
// spaces. In that case cancel the add.
private void button1_Click(object sender, EventArgs e)
{
Part newPart = listOfParts.AddNew();
if (newPart.PartName.Contains(" "))
{
MessageBox.Show("Part names cannot contain spaces.");
listOfParts.CancelNew(listOfParts.IndexOf(newPart));
}
else
{
textBox2.Text = randomNumber.Next(9999).ToString();
textBox1.Text = "Enter part name";
}
}
void listOfParts_ListChanged(object sender, ListChangedEventArgs e)
{
MessageBox.Show(e.ListChangedType.ToString());
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
// A simple business object for example purposes.
public class Part
{
private string name;
private int number;
public Part() { }
public Part(string nameForPart, int numberForPart)
{
PartName = nameForPart;
PartNumber = numberForPart;
}
public string PartName
{
get { return name; }
set { name = value; }
}
public int PartNumber
{
get { return number; }
set { number = value; }
}
}
}
Option Explicit On
Option Strict On
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Class Form1
Inherits Form
Private textBox2 As TextBox
Private listBox1 As ListBox
Private WithEvents button1 As Button
Private textBox1 As TextBox
Private randomNumber As New Random()
Public Sub New()
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.textBox1 = New System.Windows.Forms.TextBox()
Me.textBox2 = New System.Windows.Forms.TextBox()
Me.listBox1 = New System.Windows.Forms.ListBox()
Me.button1 = New System.Windows.Forms.Button()
Me.textBox1.Location = New System.Drawing.Point(169, 26)
Me.textBox1.Size = New System.Drawing.Size(100, 20)
Me.textBox1.Text = "Bracket"
Me.textBox2.Location = New System.Drawing.Point(169, 57)
Me.textBox2.ReadOnly = True
Me.textBox2.Size = New System.Drawing.Size(100, 20)
Me.textBox2.Text = "4343"
Me.listBox1.FormattingEnabled = True
Me.listBox1.Location = New System.Drawing.Point(12, 12)
Me.listBox1.Size = New System.Drawing.Size(120, 95)
Me.button1.Location = New System.Drawing.Point(180, 83)
Me.button1.Size = New System.Drawing.Size(75, 23)
Me.button1.Text = "Add New Item"
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.button1)
Me.Controls.Add(Me.listBox1)
Me.Controls.Add(Me.textBox2)
Me.Controls.Add(Me.textBox1)
Me.Text = "Parts Form"
AddHandler Me.Load, AddressOf Form1_Load
End Sub
Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
InitializeListOfParts()
listBox1.DataSource = listOfParts
listBox1.DisplayMember = "PartName"
End Sub
' Declare a new BindingListOfT with the Part business object.
Private WithEvents listOfParts As BindingList(Of Part)
Private Sub InitializeListOfParts()
' Create the new BindingList of Part type.
listOfParts = New BindingList(Of Part)
' Allow new parts to be added, but not removed once committed.
listOfParts.AllowNew = True
listOfParts.AllowRemove = False
' Raise ListChanged events when new parts are added.
listOfParts.RaiseListChangedEvents = True
' Do not allow parts to be edited.
listOfParts.AllowEdit = False
' Add a couple of parts to the list.
listOfParts.Add(New Part("Widget", 1234))
listOfParts.Add(New Part("Gadget", 5647))
End Sub
' Create a new part from the text in the two text boxes.
Private Sub listOfParts_AddingNew(ByVal sender As Object, _
ByVal e As AddingNewEventArgs) Handles listOfParts.AddingNew
e.NewObject = New Part(textBox1.Text, Integer.Parse(textBox2.Text))
End Sub
' Add the new part unless the part number contains
' spaces. In that case cancel the add.
Private Sub button1_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles button1.Click
Dim newPart As Part = listOfParts.AddNew()
If newPart.PartName.Contains(" ") Then
MessageBox.Show("Part names cannot contain spaces.")
listOfParts.CancelNew(listOfParts.IndexOf(newPart))
Else
textBox2.Text = randomNumber.Next(9999).ToString()
textBox1.Text = "Enter part name"
End If
End Sub
<STAThread()> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
End Class
' A simple business object for example purposes.
Public Class Part
Private name As String
Private number As Integer
Public Sub New()
End Sub
Public Sub New(ByVal nameForPart As String, _
ByVal numberForPart As Integer)
PartName = nameForPart
PartNumber = numberForPart
End Sub
Public Property PartName() As String
Get
Return name
End Get
Set(ByVal value As String)
name = Value
End Set
End Property
Public Property PartNumber() As Integer
Get
Return number
End Get
Set(ByVal value As Integer)
number = Value
End Set
End Property
End Class
注釈
BindingList<T> クラスは、双方向のデータ バインディング メカニズムを作成するための基本クラスとして使用できます。 BindingList<T> は、IBindingList インターフェイスの具象で汎用的な実装を提供します。 これは、IBindingList、IEditableObject、および関連する CurrencyManagerの間の微妙な相互作用のために困難な場合がある完全な IBindingList インターフェイスを実装する代わりに使用できます。 ただし、一般的なソリューション プログラマは、BindingList<T>を直接使用する代わりに、BindingSourceなどのデータ バインディング機能を提供するクラスを使用します。
BindingList<T> は、拡張可能な AddNew メソッドを使用してファクトリで作成されたインスタンスをサポートします。 (これと同じ種類の拡張性は、BindingSourceなどの他のクラスでも見つかります)さらに、このクラスは ICancelAddNew インターフェイスを実装するため、EndNew メソッドと CancelNew メソッドを使用して新しい項目のトランザクション コミットまたはロールバックを有効にします。
コンストラクター
BindingList<T>() |
既定値を使用して、BindingList<T> クラスの新しいインスタンスを初期化します。 |
BindingList<T>(IList<T>) |
指定したリストを使用して、BindingList<T> クラスの新しいインスタンスを初期化します。 |
プロパティ
AllowEdit |
リスト内の項目を編集できるかどうかを示す値を取得または設定します。 |
AllowNew |
AddNew() メソッドを使用してリストに項目を追加できるかどうかを示す値を取得または設定します。 |
AllowRemove |
コレクションから項目を削除できるかどうかを示す値を取得または設定します。 |
Count |
Collection<T>に実際に含まれる要素の数を取得します。 (継承元 Collection<T>) |
IsSortedCore |
リストが並べ替えられているかどうかを示す値を取得します。 |
Item[Int32] |
指定したインデックス位置にある要素を取得または設定します。 (継承元 Collection<T>) |
Items |
Collection<T>を囲む IList<T> ラッパーを取得します。 (継承元 Collection<T>) |
RaiseListChangedEvents |
リスト内の項目を追加または削除してイベントを発生させるかどうかを示す値 ListChanged 取得または設定します。 |
SortDirectionCore |
リストが並べ替えられる方向を取得します。 |
SortPropertyCore |
派生クラスで並べ替えが実装されている場合にリストの並べ替えに使用されるプロパティ記述子を取得します。それ以外の場合は、 |
SupportsChangeNotificationCore |
ListChanged イベントが有効かどうかを示す値を取得します。 |
SupportsSearchingCore |
リストが検索をサポートしているかどうかを示す値を取得します。 |
SupportsSortingCore |
リストが並べ替えをサポートしているかどうかを示す値を取得します。 |
メソッド
Add(T) |
Collection<T>の末尾にオブジェクトを追加します。 (継承元 Collection<T>) |
AddNew() |
新しい項目をコレクションに追加します。 |
AddNewCore() |
コレクションの末尾に新しい項目を追加します。 |
ApplySortCore(PropertyDescriptor, ListSortDirection) |
派生クラスでオーバーライドされた場合に項目を並べ替えます。それ以外の場合は、NotSupportedExceptionをスローします。 |
CancelNew(Int32) |
保留中の新しい項目を破棄します。 |
Clear() |
Collection<T>からすべての要素を削除します。 (継承元 Collection<T>) |
ClearItems() |
コレクションからすべての要素を削除します。 |
Contains(T) |
要素が Collection<T>内にあるかどうかを判断します。 (継承元 Collection<T>) |
CopyTo(T[], Int32) |
ターゲット配列の指定したインデックスから始まる互換性のある 1 次元 Arrayに、Collection<T> 全体をコピーします。 (継承元 Collection<T>) |
EndNew(Int32) |
保留中の新しい項目をコレクションにコミットします。 |
Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
FindCore(PropertyDescriptor, Object) |
検索が派生クラスで実装されている場合は、指定した値を持つ指定したプロパティ記述子を持つ項目のインデックスを検索します。それ以外の場合は、NotSupportedException。 |
GetEnumerator() |
Collection<T>を反復処理する列挙子を返します。 (継承元 Collection<T>) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
IndexOf(T) |
指定したオブジェクトを検索し、Collection<T>全体で最初に見つかった位置の 0 から始まるインデックスを返します。 (継承元 Collection<T>) |
Insert(Int32, T) |
指定したインデックス位置にある Collection<T> に要素を挿入します。 (継承元 Collection<T>) |
InsertItem(Int32, T) |
指定した項目をリスト内の指定したインデックス位置に挿入します。 |
MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
OnAddingNew(AddingNewEventArgs) |
AddingNew イベントを発生させます。 |
OnListChanged(ListChangedEventArgs) |
ListChanged イベントを発生させます。 |
Remove(T) |
特定のオブジェクトの最初の出現箇所を Collection<T>から削除します。 (継承元 Collection<T>) |
RemoveAt(Int32) |
Collection<T>の指定したインデックス位置にある要素を削除します。 (継承元 Collection<T>) |
RemoveItem(Int32) |
指定したインデックス位置にある項目を削除します。 |
RemoveSortCore() |
派生クラスで並べ替えが実装されている場合、ApplySortCore(PropertyDescriptor, ListSortDirection) で適用された並べ替えを削除します。それ以外の場合は、NotSupportedExceptionを発生させます。 |
ResetBindings() |
Reset型の ListChanged イベントを発生させます。 |
ResetItem(Int32) |
指定した位置にある項目の ItemChanged 型の ListChanged イベントを発生させます。 |
SetItem(Int32, T) |
指定したインデックス位置にある項目を、指定した項目に置き換えます。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
イベント
AddingNew |
アイテムがリストに追加される前に発生します。 |
ListChanged |
リストまたはリスト内の項目が変更されたときに発生します。 |
明示的なインターフェイスの実装
拡張メソッド
適用対象
こちらもご覧ください
.NET