다음을 통해 공유


BindingManagerBase 클래스

동일한 데이터 소스 및 데이터 멤버에 바인딩되는 Binding 개체를 모두 관리합니다. 이것은 추상 클래스입니다.

네임스페이스: System.Windows.Forms
어셈블리: System.Windows.Forms(system.windows.forms.dll)

구문

‘선언
Public MustInherit Class BindingManagerBase
‘사용 방법
Dim instance As BindingManagerBase
public abstract class BindingManagerBase
public ref class BindingManagerBase abstract
public abstract class BindingManagerBase
public abstract class BindingManagerBase

설명

BindingManagerBase를 사용하면 동일한 데이터 소스에 바인딩된 Windows Form에 있는 데이터 바인딩된 컨트롤을 동기화할 수 있습니다. 데이터 소스에 컨트롤을 쉽게 바인딩하는 방법에 대한 자세한 내용은 Binding 클래스를 참조하십시오. 예를 들어, 같은 데이터 소스의 서로 다른 열에 바인딩된 두 개의 TextBox 컨트롤이 폼에 들어 있다고 가정합니다. 데이터 소스는 고객 이름이 들어 있는 DataTable일 수 있고 열에는 이름과 성이 들어 있을 수 있습니다. 그런 경우 동일한 고객에 대하여 이름과 성을 정확하게 표시하려면 해당하는 두 컨트롤이 동기화되어야 합니다. BindingManagerBase 클래스에서 상속되는 CurrencyManager는 데이터 소스의 현재 항목에 대한 포인터를 유지하여 이러한 동기화를 수행합니다. TextBox 컨트롤이 현재 항목에 바인딩되어 동일한 행에 대한 정보를 표시합니다. 현재 항목이 변경되면 CurrencyManager는 바인딩된 컨트롤에 모두 알려 데이터를 새로 고칠 수 있도록 합니다. 또한 Position 속성을 설정하여 컨트롤이 가리키는 DataTable에 있는 행을 지정할 수 있습니다. 데이터 소스에 있는 행의 수를 확인하려면 Count 속성을 사용합니다.

데이터 소스가 현재 항목 포인터를 항상 유지하는 것이 아니므로 CurrencyManager가 필요합니다. 예를 들어, 배열 및 ArrayList 개체가 데이터 소스가 될 수 있으나 현재 항목을 반환하는 속성이 없습니다. 현재 항목을 가져오려면 Current 속성을 사용해야 합니다.

PropertyManagerBindingManagerBase에서 상속되며, 이를 사용하여 데이터 소스에 있는 현재 개체의 속성 대신 개체의 현재 속성을 유지할 수 있습니다. 이런 이유로, PropertyManager에 대해 Position 또는 Count 속성을 설정하려 해도 아무 효과가 없습니다.

BindingManagerBase를 만들려면 BindingContext 클래스를 사용합니다. 이 클래스는 관리되는 데이터 소스에 따라 CurrencyManager 또는 PropertyManager를 반환합니다.

솔루션 프로그래머는 실제 대상 데이터 소스에 대한 데이터 커넥터 및 데이터 소스 역할을 모두 수행하는 BindingSource 구성 요소에 직접 컨트롤을 바인딩하는 것이 좋습니다. BindingSource를 사용하면 컨트롤과 해당 대상 사이의 현재 위치 관리를 포함하여 단순한 데이터 바인딩 및 복잡한 데이터 바인딩 작업이 매우 쉬워집니다.

상속자 참고 사항 BindingManagerBase에서 상속하는 경우 다음 추상 멤버를 재정의해야 합니다. AddNew, Count, CancelCurrentEdit, Current, EndCurrentEdit, GetItemProperties, OnCurrentChanged, Position, RemoveAt, ResumeBinding, SuspendBinding, UpdateIsBinding.

예제

다음 예제에서는 BindingContext를 사용하여 특정 데이터 소스에 대한 BindingManagerBase를 반환합니다. 이 예제에서는 myBindingManagerBase를 모듈의 선언부에서 선언했다고 가정합니다. 그런 다음 이 예제에서는 이벤트 대리자를 CurrentChangedPositionChanged 이벤트에 추가합니다. 마지막으로 이 예제에 포함된 네 개의 메서드(MoveNext , MovePrevious , MoveFirstMoveLast)는 Position 속성을 증가 및 감소시키고 Position을 목록의 첫 번째 행 또는 마지막 행으로 설정하기도 합니다. 목록의 마지막 행은 Count 속성을 사용하여 알 수 있습니다.

Private Sub GetBindingManagerBase
   ' CustomersToOrders is the RelationName of a DataRelation.
   ' Therefore, the list maintained by the BindingManagerBase is the
   ' list of orders that belong to a specific customer in the
   ' DataTable named Customers, found in DataSet.
   myBindingManagerBase = Me.BindingContext(DataSet1, _
   "Customers.CustomersToOrders")

   ' Adds delegates to the CurrentChanged and PositionChanged events.
   AddHandler myBindingManagerBase.PositionChanged, _
   AddressOf BindingManagerBase_PositionChanged
   AddHandler myBindingManagerBase.CurrentChanged, _
   AddressOf BindingManagerBase_CurrentChanged
End Sub

Private Sub BindingManagerBase_PositionChanged _
(sender As Object, e As EventArgs)

   ' Prints the new Position of the BindingManagerBase.
   Console.Write("Position Changed: ")
   Console.WriteLine(CType(sender, BindingManagerBase).Position)
End Sub

Private Sub BindingManagerBase_CurrentChanged _
(sender As Object, e As EventArgs)

   ' Prints the new value of the current object.
   Console.Write("Current Changed: ")
   Console.WriteLine(CType(sender, BindingManagerBase).Current)
End Sub

Private Sub MoveNext
   ' Increments the Position property value by one.
   myBindingManagerBase.Position += 1
End Sub

Private Sub MovePrevious
   ' Decrements the Position property value by one.
   myBindingManagerBase.Position -= 1
End Sub

Private Sub MoveFirst
   ' Goes to the first row in the list.
   myBindingManagerBase.Position = 0
End Sub

Private Sub MoveLast
   ' Goes to the last row in the list.
   myBindingManagerBase.Position = _
   myBindingManagerBase.Count - 1
End Sub
private void GetBindingManagerBase()
{
   /* CustomersToOrders is the RelationName of a DataRelation. 
   Therefore, the list maintained by the BindingManagerBase is the
   list of orders that belong to a specific customer in the 
   DataTable named Customers, found in DataSet1. */
   myBindingManagerBase = 
   this.BindingContext[DataSet1, "Customers.CustomersToOrders"];

   // Adds delegates to the CurrentChanged and PositionChanged events.
   myBindingManagerBase.PositionChanged += 
   new EventHandler(BindingManagerBase_PositionChanged);
   myBindingManagerBase.CurrentChanged +=
   new EventHandler(BindingManagerBase_CurrentChanged);
}

private void BindingManagerBase_PositionChanged
(object sender, EventArgs e)
{
   // Prints the new Position of the BindingManagerBase.
   Console.Write("Position Changed: ");
   Console.WriteLine(((BindingManagerBase)sender).Position);
}

private void BindingManagerBase_CurrentChanged
(object sender, EventArgs e)
{
   // Prints the new value of the current object.
   Console.Write("Current Changed: ");
   Console.WriteLine(((BindingManagerBase)sender).Current);
}

private void MoveNext()
{
   // Increments the Position property value by one.
   myBindingManagerBase.Position += 1;
}

private void MovePrevious()
{
   // Decrements the Position property value by one.
   myBindingManagerBase.Position -= 1;
}

private void MoveFirst()
{
   // Goes to the first row in the list.
   myBindingManagerBase.Position = 0;
}

private void MoveLast()
{
   // Goes to the last row in the list.
   myBindingManagerBase.Position = 
   myBindingManagerBase.Count - 1;
}
void GetBindingManagerBase()
{
   
   /* CustomersToOrders is the RelationName of a DataRelation. 
      Therefore, the list maintained by the BindingManagerBase is the
      list of orders that belong to a specific customer in the 
      DataTable named Customers, found in DataSet1. */
   myBindingManagerBase = this->BindingContext[DataSet1, "Customers.CustomersToOrders"];
   
   // Adds delegates to the CurrentChanged and PositionChanged events.
   myBindingManagerBase->PositionChanged += gcnew EventHandler( this, &Form1::BindingManagerBase_PositionChanged );
   myBindingManagerBase->CurrentChanged += gcnew EventHandler( this, &Form1::BindingManagerBase_CurrentChanged );
}

void BindingManagerBase_PositionChanged( Object^ sender, EventArgs^ /*e*/ )
{
   
   // Prints the new Position of the BindingManagerBase.
   Console::Write( "Position Changed: " );
   Console::WriteLine( (dynamic_cast<BindingManagerBase^>(sender))->Position );
}

void BindingManagerBase_CurrentChanged( Object^ sender, EventArgs^ /*e*/ )
{
   
   // Prints the new value of the current object.
   Console::Write( "Current Changed: " );
   Console::WriteLine( (dynamic_cast<BindingManagerBase^>(sender))->Current );
}

void MoveNext()
{
   
   // Increments the Position property value by one.
   myBindingManagerBase->Position = myBindingManagerBase->Position + 1;
}

void MovePrevious()
{
   
   // Decrements the Position property value by one.
   myBindingManagerBase->Position = myBindingManagerBase->Position - 1;
}

void MoveFirst()
{
   
   // Goes to the first row in the list.
   myBindingManagerBase->Position = 0;
}

void MoveLast()
{
   
   // Goes to the last row in the list.
   myBindingManagerBase->Position = myBindingManagerBase->Count - 1;
}
private void GetBindingManagerBase()
{
    /* CustomersToOrders is the RelationName of a DataRelation. 
       Therefore, the list maintained by the BindingManagerBase is the
       list of orders that belong to a specific customer in the 
       DataTable named Customers, found in dataSet1. 
     */
    myBindingManagerBase = this.get_BindingContext().get_Item(dataSet1, 
        "Customers.CustomersToOrders");

    // Adds delegates to the CurrentChanged and PositionChanged events.
    myBindingManagerBase.add_PositionChanged(new EventHandler
        (BindingManagerBase_PositionChanged));
    myBindingManagerBase.add_CurrentChanged(new EventHandler
        (BindingManagerBase_CurrentChanged));
} //GetBindingManagerBase

private void BindingManagerBase_PositionChanged(Object sender, EventArgs e)
{
    // Prints the new Position of the BindingManagerBase.
    Console.Write("Position Changed: ");
    Console.WriteLine(((BindingManagerBase)(sender)).get_Position());
} //BindingManagerBase_PositionChanged

private void BindingManagerBase_CurrentChanged(Object sender, EventArgs e)
{
    // Prints the new value of the current object.
    Console.Write("Current Changed: ");
    Console.WriteLine(((BindingManagerBase)(sender)).get_Current());
} //BindingManagerBase_CurrentChanged

private void MoveNext()
{
    // Increments the Position property value by one.
    myBindingManagerBase.set_Position(myBindingManagerBase.get_Position()
        + 1);
} //MoveNext

private void MovePrevious()
{
    // Decrements the Position property value by one.
    myBindingManagerBase.set_Position(myBindingManagerBase.get_Position()
        - 1);
} //MovePrevious

private void MoveFirst()
{
    // Goes to the first row in the list.
    myBindingManagerBase.set_Position(0);
} //MoveFirst

private void MoveLast()
{
    // Goes to the last row in the list.
    myBindingManagerBase.set_Position(myBindingManagerBase.get_Count() - 1);
} //MoveLast

상속 계층 구조

System.Object
  System.Windows.Forms.BindingManagerBase
     System.Windows.Forms.CurrencyManager
     System.Windows.Forms.PropertyManager

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

BindingManagerBase 멤버
System.Windows.Forms 네임스페이스
BindingSource
BindingContext 클래스
CurrencyManager
PropertyManager