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
[<System.Serializable>]
type BindingList<'T> = class
inherit Collection<'T>
interface IBindingList
interface ICancelAddNew
interface IRaiseItemChangedEvents
interface IList
interface ICollection
interface IEnumerable
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 提供します。 これは、および 関連CurrencyManagerする の間IEditableObjectIBindingListの微妙な相互作用のために困難な場合がある、完全なIBindingListインターフェイスを実装する代わりに使用します。 ただし、一般的なソリューション プログラマは、 を直接使用する代わりに、 などの BindingSourceデータ バインディング機能を提供するクラスを使用 BindingList<T>します。
BindingList<T> は、拡張可能 AddNew なメソッドを使用してファクトリで作成されたインスタンスをサポートします。 (この同じ種類の拡張性は、 などのBindingSource他のクラスでも見つかります)。さらに、このクラスは インターフェイスをICancelAddNew実装するため、 メソッドと CancelNew メソッドを使用して新しい項目のトランザクション コミットまたはロールバックをEndNew有効にします。
コンストラクター
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 |
IList<T> をラップする Collection<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) |
Collection<T> 全体を互換性のある 1 次元の Array にコピーします。コピー操作は、コピー先の配列の指定したインデックスから始まります。 (継承元 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() |
種類が ListChanged の Reset イベントを発生させます。 |
ResetItem(Int32) |
指定した位置の項目に対して、種類が ListChanged の ItemChanged イベントを発生させます。 |
SetItem(Int32, T) |
指定したインデックス位置の項目を、指定した項目で置き換えます。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
イベント
AddingNew |
項目がリストに追加される前に発生します。 |
ListChanged |
リストまたはリスト内の項目が変更された場合に発生します。 |
明示的なインターフェイスの実装
拡張メソッド
適用対象
こちらもご覧ください
フィードバック
フィードバックの送信と表示