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 인터페이스를 구현하는 대신, IBindingList, IEditableObject및 연결된 CurrencyManager간의 미묘한 상호 작용으로 인해 어려울 수 있습니다. 그러나 일반적인 솔루션 프로그래머가 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) |
파생 클래스에서 재정의된 경우 항목을 정렬합니다. 그렇지 않으면 NotSupportedExceptionthrow합니다. |
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() |
Reset형식의 ListChanged 이벤트를 발생합니다. |
ResetItem(Int32) |
지정된 위치에 있는 항목에 대한 ItemChanged 형식의 ListChanged 이벤트를 발생합니다. |
SetItem(Int32, T) |
지정된 인덱스의 항목을 지정된 항목으로 바꿉니다. |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
이벤트
AddingNew |
항목이 목록에 추가되기 전에 발생합니다. |
ListChanged |
목록 또는 목록의 항목이 변경되면 발생합니다. |
명시적 인터페이스 구현
확장 메서드
적용 대상
추가 정보
.NET