BindingContext 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Control 클래스에서 상속되는 모든 개체에 대해 BindingManagerBase 개체의 컬렉션을 관리합니다.
public ref class BindingContext : System::Collections::ICollection
public class BindingContext : System.Collections.ICollection
type BindingContext = class
interface ICollection
interface IEnumerable
Public Class BindingContext
Implements ICollection
- 상속
-
BindingContext
- 구현
예제
다음 코드 예제에서는 5개의 컨트롤(a 및 4 Binding 개의 컨트롤)을 DateTimePicker 여러 데이터 원본에 바인딩하는 4개의 TextBox 개체를 만듭니다. 그런 다음 는 BindingContext 각 데이터 원본에 대한 를 BindingManagerBase 가져오는 데 사용됩니다.
void BindControls()
{
/* Create two Binding objects for the first two TextBox
controls. The data-bound property for both controls
is the Text property. The data source is a DataSet
(ds). The data member is a navigation path in the form:
"TableName.ColumnName". */
text1->DataBindings->Add( gcnew Binding( "Text",ds,"customers.custName" ) );
text2->DataBindings->Add( gcnew Binding( "Text",ds,"customers.custID" ) );
/* Bind the DateTimePicker control by adding a new Binding.
The data member of the DateTimePicker is a navigation path:
TableName.RelationName.ColumnName string. */
DateTimePicker1->DataBindings->Add( gcnew Binding( "Value",ds,"customers.CustToOrders.OrderDate" ) );
/* Add event delegates for the Parse and Format events to a
new Binding object, and add the object to the third
TextBox control's BindingsCollection. The delegates
must be added before adding the Binding to the
collection; otherwise, no formatting occurs until
the Current object of the BindingManagerBase for
the data source changes. */
Binding^ b = gcnew Binding( "Text",ds,"customers.custToOrders.OrderAmount" );
b->Parse += gcnew ConvertEventHandler( this, &Form1::CurrencyStringToDecimal );
b->Format += gcnew ConvertEventHandler( this, &Form1::DecimalToCurrencyString );
text3->DataBindings->Add( b );
// Get the BindingManagerBase for the Customers table.
bmCustomers = this->BindingContext[ ds,"Customers" ];
/* Get the BindingManagerBase for the Orders table using the
RelationName. */
bmOrders = this->BindingContext[ds, "customers.CustToOrders"];
/* Bind the fourth TextBox control's Text property to the
third control's Text property. */
text4->DataBindings->Add( "Text", text3, "Text" );
}
protected void BindControls()
{
/* Create two Binding objects for the first two TextBox
controls. The data-bound property for both controls
is the Text property. The data source is a DataSet
(ds). The data member is a navigation path in the form:
"TableName.ColumnName". */
text1.DataBindings.Add(new Binding
("Text", ds, "customers.custName"));
text2.DataBindings.Add(new Binding
("Text", ds, "customers.custID"));
/* Bind the DateTimePicker control by adding a new Binding.
The data member of the DateTimePicker is a navigation path:
TableName.RelationName.ColumnName string. */
DateTimePicker1.DataBindings.Add(new
Binding("Value", ds, "customers.CustToOrders.OrderDate"));
/* Add event delegates for the Parse and Format events to a
new Binding object, and add the object to the third
TextBox control's BindingsCollection. The delegates
must be added before adding the Binding to the
collection; otherwise, no formatting occurs until
the Current object of the BindingManagerBase for
the data source changes. */
Binding b = new Binding
("Text", ds, "customers.custToOrders.OrderAmount");
b.Parse+=new ConvertEventHandler(CurrencyStringToDecimal);
b.Format+=new ConvertEventHandler(DecimalToCurrencyString);
text3.DataBindings.Add(b);
// Get the BindingManagerBase for the Customers table.
bmCustomers = this.BindingContext [ds, "Customers"];
/* Get the BindingManagerBase for the Orders table using the
RelationName. */
bmOrders = this.BindingContext[ds, "customers.CustToOrders"];
/* Bind the fourth TextBox control's Text property to the
third control's Text property. */
text4.DataBindings.Add("Text", text3, "Text");
}
Protected Sub BindControls()
' Create two Binding objects for the first two TextBox
' controls. The data-bound property for both controls
' is the Text property. The data source is a DataSet
' (ds). The data member is the string
' "TableName.ColumnName".
text1.DataBindings.Add(New Binding _
("Text", ds, "customers.custName"))
text2.DataBindings.Add(New Binding _
("Text", ds, "customers.custID"))
' Bind the DateTimePicker control by adding a new Binding.
' The data member of the DateTimePicker is a
' TableName.RelationName.ColumnName string.
DateTimePicker1.DataBindings.Add(New Binding _
("Value", ds, "customers.CustToOrders.OrderDate"))
' Add event delegates for the Parse and Format events to a
' new Binding object, and add the object to the third
' TextBox control's BindingsCollection. The delegates
' must be added before adding the Binding to the
' collection; otherwise, no formatting occurs until
' the Current object of the BindingManagerBase for
' the data source changes.
Dim b As Binding = New Binding _
("Text", ds, "customers.custToOrders.OrderAmount")
AddHandler b.Parse, New ConvertEventHandler(AddressOf CurrencyStringToDecimal)
AddHandler b.Format, New ConvertEventHandler(AddressOf DecimalToCurrencyString)
text3.DataBindings.Add(b)
' Get the BindingManagerBase for the Customers table.
bmCustomers = Me.BindingContext(ds, "Customers")
' Get the BindingManagerBase for the Orders table using the
' RelationName.
bmOrders = Me.BindingContext(ds, "customers.CustToOrders")
' Bind the fourth TextBox control's Text property to the
' third control's Text property.
text4.DataBindings.Add("Text", text3, "Text")
End Sub
설명
각 Windows Form에는 폼의 개체를 관리하는 개체가 BindingManagerBase 하나 BindingContext 이상 있습니다. 클래스는 BindingManagerBase 추상이므로 속성의 Item[] 반환 형식은 또는 PropertyManager입니다CurrencyManager. 데이터 원본이 개체 목록 대신 단일 속성만 반환할 수 있는 개체인 경우 는 Type 입니다 PropertyManager. 예를 들어 를 데이터 원본으로 지정 TextBox 하면 가 PropertyManager 반환됩니다. 반면에 데이터 원본이 또는 IBindingList를 구현 IList 하는 개체인 경우 가 CurrencyManager 반환됩니다.
Windows Form의 각 데이터 원본에 대해 단일 CurrencyManager 또는 PropertyManager가 있습니다. Windows Form BindingContext 과 연결된 여러 데이터 원본이 있을 수 있으므로 을 사용하면 데이터 원본과 연결된 특정 CurrencyManager 항목을 검색할 수 있습니다.
참고
사용 하는 경우는 Item[] 속성이 BindingContext 없는 경우 새로 BindingManagerBase 만듭니다. 반환된 개체가 의도한 목록(또는 목록)을 관리하지 못할 수 있으므로 이로 인해 약간의 혼란이 발생할 수 있습니다. 잘못된 BindingManagerBase를 반환하지 않도록 하려면 메서드를 Contains 사용하여 의도한 BindingManagerBase 가 이미 있는지 확인합니다.
, Panel또는 TabControl와 같은 컨테이너 컨트롤을 GroupBox사용하여 데이터 바인딩된 컨트롤을 포함하는 경우 해당 컨테이너 컨트롤 및 해당 컨트롤에 대한 를 만들 BindingContext 수 있습니다. 그런 다음 양식의 각 부분을 자체 BindingManagerBase으로 관리할 수 있습니다. 동일한 데이터 원본에 BindingContext 대해 여러 BindingManagerBase 개체를 만드는 방법에 대한 자세한 내용은 생성자를 참조하세요.
TextBox 컨트롤을 폼에 추가하고 데이터 세트의 테이블 열에 바인딩하면 컨트롤은 해당 폼의 BindingContext와 통신합니다. 은 BindingContext해당 데이터 연결에 대한 특정 CurrencyManager 에 대해 설명합니다. 의 속성을 쿼리 Position
한 경우 해당 컨트롤의 CurrencyManager바인딩에 대한 현재 레코드를 TextBox 보고합니다. 다음 코드 예제에서는 TextBox 컨트롤이 dataSet1
데이터 세트의 Customers
테이블에 있는 FirstName
열을 통해 BindingContext에 바인딩됩니다.
TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");
textBox1->DataBindings->Add("Text", dataSet1, "Customers.FirstName");
두 번째 TextBox 컨트롤(TextBox2
)을 폼에 추가하고 동일한 데이터 세트의 Customers
데이블의 LastName
열에 바인딩할 수 있습니다.
BindingContext은 첫 번째 바인딩(Customers.FirstName
에서 TextBox1
)을 인식하므로 두 텍스트 상자가 동일한 데이터 세트(DataSet1
)에 바인딩되므로 동일한 CurrencyManager를 사용합니다.
TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");
textBox2->DataBindings->Add("Text", dataSet1, "Customers.LastName");
TextBox2
을 다른 데이터 세트에 바인딩하면 BindingContext가 두 번째 CurrencyManager을 만들고 관리합니다.
DataSource 및 DisplayMember 속성을 설정하는 방법에 대해 일관성을 유지하는 것이 중요합니다. 그렇지 않으면 BindingContext이 동일한 데이터 세트에 대해 여러 통화 관리자를 만들어 오류가 발생합니다. 다음 코드 예제에서는 속성 및 관련 개체 BindingContext 를 설정하는 몇 가지 방법을 보여 있습니다. 코드 전체에서 일관성이 있는 한 다음 방법 중 하나를 사용하여 속성을 설정할 수 있습니다.
ComboBox1.DataSource = DataSet1
ComboBox1.DisplayMember = "Customers.FirstName"
Me.BindingContext(dataSet1, "Customers").Position = 1
comboBox1.DataSource = DataSet1;
comboBox1.DisplayMember = "Customers.FirstName";
this.BindingContext[dataSet1, "Customers"].Position = 1;
comboBox1->DataSource = dataSet1;
comboBox1->DisplayMember = "Customers.FirstName";
this->BindingContext->get_Item(dataSet1, "Customers")->Position = 1;
ComboBox1.DataSource = DataSet1.Customers
ComboBox1.DisplayMember = "FirstName"
Me.BindingContext(dataSet1.Customers).Position = 1
comboBox1.DataSource = DataSet1.Customers;
comboBox1.DisplayMember = "FirstName";
this.BindingContext[dataSet1.Customers].Position = 1;
comboBox1->DataSource = dataSet1->Customers;
comboBox1->DisplayMember = "FirstName";
this->BindingContext->get_Item(dataSet1->Customers)->Position = 1;
참고
대부분의 Windows Forms 애플리케이션을 통해 바인딩하는 BindingSource합니다.
BindingSource 구성 요소는 를 캡슐화 CurrencyManager 하고 프로그래밍 인터페이스를 CurrencyManager 노출합니다. 바인딩에 를 사용하는 BindingSource 경우 에서 노출하는 BindingSource 멤버를 사용하여 를 통과BindingContext하지 않고 "currency"(즉, Position
)를 조작해야 합니다.
생성자
BindingContext() |
BindingContext 클래스의 새 인스턴스를 초기화합니다. |
속성
IsReadOnly |
컬렉션이 읽기 전용인지를 나타내는 값을 가져옵니다. |
Item[Object, String] |
지정된 데이터 소스 및 데이터 멤버와 관련된 BindingManagerBase를 가져옵니다. |
Item[Object] |
지정된 데이터 소스와 연결된 BindingManagerBase를 가져옵니다. |
메서드
Add(Object, BindingManagerBase) |
특정 데이터 소스와 연관된 BindingManagerBase를 컬렉션에 추가합니다. |
AddCore(Object, BindingManagerBase) |
특정 데이터 소스와 연관된 BindingManagerBase를 컬렉션에 추가합니다. |
Clear() |
BindingManagerBase 개체의 컬렉션을 지웁니다. |
ClearCore() |
컬렉션을 지웁니다. |
Contains(Object) |
BindingContext에 지정한 데이터 소스와 관련된 BindingManagerBase가 포함되어 있는지 여부를 나타내는 값을 가져옵니다. |
Contains(Object, String) |
BindingContext에 지정한 데이터 소스 및 데이터 멤버와 관련된 BindingManagerBase가 포함되어 있는지 여부를 나타내는 값을 가져옵니다. |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
OnCollectionChanged(CollectionChangeEventArgs) |
CollectionChanged 이벤트를 발생시킵니다. |
Remove(Object) |
지정된 데이터 소스와 관련된 BindingManagerBase를 삭제합니다. |
RemoveCore(Object) |
지정된 데이터 소스와 관련된 BindingManagerBase를 제거합니다. |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
UpdateBinding(BindingContext, Binding) |
Binding을 새 BindingContext와 연결합니다. |
이벤트
CollectionChanged |
처리될 때 항상 NotImplementedException을 발생시킵니다. |
명시적 인터페이스 구현
ICollection.CopyTo(Array, Int32) |
컬렉션 인덱스부터 컬렉션의 요소를 지정한 배열에 복사합니다. |
ICollection.Count |
CurrencyManager가 관리하는 전체 BindingContext 개체의 수를 가져옵니다. |
ICollection.IsSynchronized |
컬렉션이 동기화되는지를 나타내는 값을 가져옵니다. |
ICollection.SyncRoot |
동기화(스레드로부터의 안전성)에 사용할 개체를 가져옵니다. |
IEnumerable.GetEnumerator() |
컬렉션의 열거자를 가져옵니다. |
확장 메서드
Cast<TResult>(IEnumerable) |
IEnumerable의 요소를 지정된 형식으로 캐스팅합니다. |
OfType<TResult>(IEnumerable) |
지정된 형식에 따라 IEnumerable의 요소를 필터링합니다. |
AsParallel(IEnumerable) |
쿼리를 병렬화할 수 있도록 합니다. |
AsQueryable(IEnumerable) |
IEnumerable을 IQueryable로 변환합니다. |
적용 대상
추가 정보
.NET