BindingContext BindingContext BindingContext BindingContext Class

정의

Control 클래스에서 상속되는 모든 개체에 대해 BindingManagerBase 개체의 컬렉션을 관리합니다.Manages the collection of BindingManagerBase objects for any object that inherits from the Control class.

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
상속
BindingContextBindingContextBindingContextBindingContext
구현

예제

다음 코드 예제에서는 네 개를 만듭니다 Binding -다섯 개의 컨트롤을 바인딩할 개체를 DateTimePicker -4 TextBox 컨트롤-여러 데이터 원본.The following code example creates four Binding objects to bind five controls - a DateTimePicker and four TextBox controls - to several data sources. 합니다 BindingContext get을 사용 하는 BindingManagerBase 각 데이터 원본에 대 한 합니다.The BindingContext is then used to get the BindingManagerBase for each data source.

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에 하나 이상의 BindingContext 개체를 관리 하는 BindingManagerBase 폼에 대 한 개체입니다.Each Windows Form has at least one BindingContext object that manages the BindingManagerBase objects for the form. 때문에 BindingManagerBase 클래스는 추상 클래스의 반환 형식을 합니다 Item[Object] 속성이 CurrencyManager 또는 PropertyManager합니다.Because the BindingManagerBase class is abstract, the return type of the Item[Object] property is either a CurrencyManager or a PropertyManager. 데이터 원본 개체를 개체 목록) 하는 경우 (대신 하나의 속성만 반환할 수 있는 경우는 Type 되는 PropertyManager.If the data source is an object that can return only a single property (instead of a list of objects), the Type is a PropertyManager. 예를 들어 지정 하는 경우는 TextBox 데이터 원본으로는 PropertyManager 반환 됩니다.For example, if you specify a TextBox as the data source, a PropertyManager is returned. 반면, 데이터 원본 개체를 구현 하는 경우 IListIBindingList, CurrencyManager 반환 됩니다.On the other hand, if the data source is an object that implements IList or IBindingList, a CurrencyManager is returned.

각 Windows Form에 데이터 원본에 대해는 단일 CurrencyManager 또는 PropertyManager합니다.For each data source on a Windows Form, there is a single CurrencyManager or PropertyManager. Windows 폼을 사용 하 여 연결 된 여러 데이터 원본 수 있으므로 합니다 BindingContext 특정을 검색할 수 있도록 CurrencyManager 데이터 원본에 연결 된입니다.Because there may be multiple data sources associated with a Windows Form, the BindingContext enables you to retrieve any particular CurrencyManager associated with a data source.

참고

사용 하는 경우는 Item[Object] 속성을 BindingContextBindingManagerBase 아직 없는 경우.When using the Item[Object] property, the BindingContext creates a new BindingManagerBase if one does not already exist. 이 목록 (또는 모든 목록)을 반환된 된 개체를 관리 하지 못할 수도 처럼 약간의 혼동이 발생할 수 있습니다.This can lead to some confusion, as the returned object may not manage the list (or any list) that you intend. 잘못 된 반환 하지 않도록 하려면 BindingManagerBase를 사용 하 여는 Contains 여부를 확인 하는 메서드 의도 한 BindingManagerBase 이미 있습니다.To prevent returning an invalid BindingManagerBase, use the Contains method to determine if the intended BindingManagerBase already exists.

와 같은 컨테이너 컨트롤을 사용 하는 경우는 GroupBox, Panel, 또는 TabControl데이터 바인딩된 컨트롤을 포함 하기 만들 수 있습니다는 BindingContext 만 해당 컨테이너 컨트롤과 해당 컨트롤에 대 한 합니다.If you use a container control, such as a GroupBox, Panel, or TabControl, to contain data-bound controls, you can create a BindingContext for just that container control and its controls. 폼의 각 부분을 자체에서 관리할 수 있습니다 다음 BindingManagerBase합니다.Then, each part of your form can be managed by its own BindingManagerBase. 참조 된 BindingContext 여러 만들기에 대 한 자세한 정보에 대 한 생성자 BindingManagerBase 동일한 데이터 원본에 대 한 개체입니다.See the BindingContext constructor for more information about creating multiple BindingManagerBase objects for the same data source.

추가 하는 경우는 TextBox 컨트롤을 폼에 컨트롤을 데이터 집합에 있는 테이블의 열과 통신 하는 바인딩은 BindingContext 해당 폼의 합니다.If you add a TextBox control to a form and bind it to a column of a table in a dataset, the control communicates with the BindingContext of that form. 합니다 BindingContext, 차례로 설명 하는 특정 CurrencyManager 해당 데이터 연결에 대 한 합니다.The BindingContext, in turn, talks to the specific CurrencyManager for that data association. 쿼리 하는 경우는 Position 의 속성을 CurrencyManager의 바인딩에 대 한 현재 레코드 보고할 수 TextBox 컨트롤.If you queried the Position property of the CurrencyManager, it would report the current record for the binding of that TextBox control. 다음 코드 예제에서는 TextBox 컨트롤이 바인딩되는 FirstName 열의 Customers 테이블에 dataSet1 를 통해 데이터 집합을 BindingContext 를 폼에 대 한.In the following code example, a TextBox control is bound to the FirstName column of a Customers table on the dataSet1 dataset through the BindingContext for the form it is on.

TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")  
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");  
textBox1->DataBindings->Add("Text", dataSet1, "Customers.FirstName");  

초를 추가할 수 있습니다 TextBox 컨트롤 (TextBox2)을 폼에 바인딩할를 LastName 열의 Customers 동일한 데이터 집합의 테이블.You can add a second TextBox control (TextBox2) to the form and bind it to the LastName column of the Customers table in the same dataset. BindingContext 첫 번째 바인딩 인지 (TextBox1Customers.FirstName) 이므로 동일한 사용 됩니다 CurrencyManager처럼 두 텍스트 상자는 동일한 데이터 집합에 바인딩됩니다 (DataSet1).The BindingContext is aware of the first binding (TextBox1 to Customers.FirstName), so it would use the same CurrencyManager, as both text boxes are bound to the same dataset (DataSet1).

TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")  
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");  
textBox2->DataBindings->Add("Text", dataSet1, "Customers.LastName");  

바인딩하는 경우 TextBox2 를 다른 데이터 집합에 BindingContext 작성 하 고 두 번째 관리 CurrencyManager합니다.If you bind TextBox2 to a different dataset, the BindingContext creates and manages a second CurrencyManager.

설정 하는 방법에 대 한 일관성을 유지 해야 합니다 DataSourceDisplayMember 속성 그렇지 않은 경우는 BindingContext 여러 통화 오류가 발생 하는 동일한 데이터 집합에 대 한 관리자를 만듭니다.It is important to be consistent about how you set the DataSource and DisplayMember properties; otherwise, the BindingContext creates multiple currency managers for the same dataset, which results in errors. 다음 코드 예제에서는 속성 및 이와 관련 된 설정에 몇 가지 방법을 보여 줍니다 BindingContext 개체입니다.The following code example shows a few ways to set the properties and their associated BindingContext objects. 로 코드 전체에서 일관성은 다음 방법 중 하나를 사용 하 여 속성을 설정할 수 있습니다.You can set the properties using either of the following methods, as long as you are consistent throughout your code.

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합니다.Most Windows Forms applications bind through a BindingSource. 합니다 BindingSource 구성 요소를 캡슐화를 CurrencyManager 노출는 CurrencyManager 프로그래밍 인터페이스입니다.The BindingSource component encapsulates a CurrencyManager and exposes the CurrencyManager programming interface. 사용 하는 경우는 BindingSource 바인딩에 대 한 하 여 노출 되는 멤버를 사용 해야는 BindingSource "currency"를 조작 하 (즉, Position)를 통해 수행 하지 않고는 BindingContext.When using a BindingSource for binding, you should use the members exposed by the BindingSource to manipulate "currency" (that is, Position) rather than go through the BindingContext.

생성자

BindingContext() BindingContext() BindingContext() BindingContext()

BindingContext 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the BindingContext class.

속성

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

컬렉션이 읽기 전용인지를 나타내는 값을 가져옵니다.Gets a value indicating whether the collection is read-only.

Item[Object, String] Item[Object, String] Item[Object, String] Item[Object, String]

지정된 데이터 소스 및 데이터 멤버와 관련된 BindingManagerBase를 가져옵니다.Gets a BindingManagerBase that is associated with the specified data source and data member.

Item[Object] Item[Object] Item[Object] Item[Object]

지정된 데이터 소스와 연결된 BindingManagerBase를 가져옵니다.Gets the BindingManagerBase that is associated with the specified data source.

메서드

Add(Object, BindingManagerBase) Add(Object, BindingManagerBase) Add(Object, BindingManagerBase) Add(Object, BindingManagerBase)

특정 데이터 소스와 연관된 BindingManagerBase를 컬렉션에 추가합니다.Adds the BindingManagerBase associated with a specific data source to the collection.

AddCore(Object, BindingManagerBase) AddCore(Object, BindingManagerBase) AddCore(Object, BindingManagerBase) AddCore(Object, BindingManagerBase)

특정 데이터 소스와 연관된 BindingManagerBase를 컬렉션에 추가합니다.Adds the BindingManagerBase associated with a specific data source to the collection.

Clear() Clear() Clear() Clear()

BindingManagerBase 개체의 컬렉션을 지웁니다.Clears the collection of any BindingManagerBase objects.

ClearCore() ClearCore() ClearCore() ClearCore()

컬렉션을 지웁니다.Clears the collection.

Contains(Object) Contains(Object) Contains(Object) Contains(Object)

BindingContext에 지정한 데이터 소스와 관련된 BindingManagerBase가 포함되어 있는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the BindingContext contains the BindingManagerBase associated with the specified data source.

Contains(Object, String) Contains(Object, String) Contains(Object, String) Contains(Object, String)

BindingContext에 지정한 데이터 소스 및 데이터 멤버와 관련된 BindingManagerBase가 포함되어 있는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the BindingContext contains the BindingManagerBase associated with the specified data source and data member.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
OnCollectionChanged(CollectionChangeEventArgs) OnCollectionChanged(CollectionChangeEventArgs) OnCollectionChanged(CollectionChangeEventArgs) OnCollectionChanged(CollectionChangeEventArgs)

CollectionChanged 이벤트를 발생시킵니다.Raises the CollectionChanged event.

Remove(Object) Remove(Object) Remove(Object) Remove(Object)

지정된 데이터 소스와 관련된 BindingManagerBase를 삭제합니다.Deletes the BindingManagerBase associated with the specified data source.

RemoveCore(Object) RemoveCore(Object) RemoveCore(Object) RemoveCore(Object)

지정된 데이터 소스와 관련된 BindingManagerBase를 제거합니다.Removes the BindingManagerBase associated with the specified data source.

ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)
UpdateBinding(BindingContext, Binding) UpdateBinding(BindingContext, Binding) UpdateBinding(BindingContext, Binding) UpdateBinding(BindingContext, Binding)

Binding을 새 BindingContext와 연결합니다.Associates a Binding with a new BindingContext.

이벤트

CollectionChanged CollectionChanged CollectionChanged CollectionChanged

처리될 때 항상 NotImplementedException을 발생시킵니다.Always raises a NotImplementedException when handled.

명시적 인터페이스 구현

ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32)

컬렉션 인덱스부터 컬렉션의 요소를 지정한 배열에 복사합니다.Copies the elements of the collection into a specified array, starting at the collection index.

ICollection.Count ICollection.Count ICollection.Count ICollection.Count

CurrencyManager가 관리하는 전체 BindingContext 개체의 수를 가져옵니다.Gets the total number of CurrencyManager objects managed by the BindingContext.

ICollection.IsSynchronized ICollection.IsSynchronized ICollection.IsSynchronized ICollection.IsSynchronized

컬렉션이 동기화되는지를 나타내는 값을 가져옵니다.Gets a value indicating whether the collection is synchronized.

ICollection.SyncRoot ICollection.SyncRoot ICollection.SyncRoot ICollection.SyncRoot

동기화(스레드로부터의 안전성)에 사용할 개체를 가져옵니다.Gets an object to use for synchronization (thread safety).

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

컬렉션의 열거자를 가져옵니다.Gets an enumerator for the collection.

Extension Methods

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

IEnumerable의 요소를 지정된 형식으로 캐스팅합니다.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable의 요소를 필터링합니다.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

쿼리를 병렬화할 수 있도록 합니다.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

IEnumerableIQueryable로 변환합니다.Converts an IEnumerable to an IQueryable.

적용 대상

추가 정보