Freigeben über


BindingManagerBase-Klasse

Verwaltet sämtliche Binding-Objekte, die an dieselbe Datenquelle und denselben Datenmember gebunden sind. Diese Klasse ist abstrakt.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Syntax

'Declaration
Public MustInherit Class BindingManagerBase
'Usage
Dim instance As BindingManagerBase
public abstract class BindingManagerBase
public ref class BindingManagerBase abstract
public abstract class BindingManagerBase
public abstract class BindingManagerBase

Hinweise

Die BindingManagerBase ermöglicht die Synchronisierung datengebundener Steuerelemente in einem Windows Form, die an dieselbe Datenquelle gebunden sind. (Weitere Informationen über einfache Bindungen eines Steuerelements an eine Datenquelle finden Sie unter der Binding-Klasse.) Angenommen, ein Formular enthält zwei TextBox-Steuerelemente, die an dieselbe Datenquelle, aber an unterschiedliche Spalten gebunden sind. Die Datenquelle kann eine DataTable sein, die Kundennamen enthält, während die Spalten die Vor- und Nachnamen enthalten können. Die beiden Steuerelemente müssen synchronisiert werden, um den richtigen Vor- und Nachnamen eines Kunden anzuzeigen. Der CurrencyManager, der von der BindingManagerBase-Klasse erbt, führt diese Synchronisierung mithilfe eines Zeigers auf das aktuelle Element in der Datenquelle aus. Die TextBox-Steuerelemente werden an das aktuelle Element gebunden, sodass sie die Informationen für dieselbe Zeile anzeigen. Bei Änderung des aktuellen Elements benachrichtigt der CurrencyManager sämtliche verbundenen Steuerelemente, sodass diese die Daten aktualisieren können. Weiterhin können Sie die Position-Eigenschaft festlegen, um die Zeile der DataTable anzugeben, auf die die Steuerelemente zeigen. Wenn Sie bestimmen möchten, wie viele Zeilen in der Datenquelle vorhanden sind, verwenden Sie die Count-Eigenschaft.

Der CurrencyManager ist erforderlich, da Datenquellen nicht notwendigerweise über einen Zeiger auf das aktuelle Element verfügen. Arrays und ArrayList-Objekte können z. B. Datenquellen sein, verfügen jedoch über keine Eigenschaft, die das aktuelle Element zurückgibt. Wenn Sie das aktuelle Element abrufen möchten, verwenden Sie die Current-Eigenschaft.

Der PropertyManager erbt außerdem von der BindingManagerBase. Er wird verwendet, um in einer Datenquelle die aktuelle Eigenschaft eines Objekts, im Gegensatz zur Eigenschaft eines aktuellen Objekts, zu verwalten. Aus diesem Grund hat der Versuch, die Position-Eigenschaft oder die Count-Eigenschaft für einen PropertyManager festzulegen, keinerlei Auswirkungen.

Verwenden Sie zum Erstellen einer BindingManagerBase die BindingContext-Klasse, die je nach verwalteter Datenquelle entweder einen CurrencyManager oder einen PropertyManager zurückgibt.

Projektmappenprogrammierer sollten Steuerelemente direkt an eine BindingSource-Komponente binden, die sowohl als Datenquelle als auch als Datenverbindung für die tatsächliche Datenquelle fungiert. BindingSource vereinfacht sowohl einfache als auch komplexe Datenbindungen einschließlich der Währungsverwaltung zwischen dem Steuerelement und dessen Ziel in hohem Maße.

Hinweise für Erben Wenn Sie BindingManagerBase vererben, müssen Sie die folgenden abstrakten Member überschreiben: AddNew, Count, CancelCurrentEdit, Current, EndCurrentEdit, GetItemProperties, OnCurrentChanged, Position, RemoveAt, ResumeBinding, SuspendBinding und UpdateIsBinding.

Beispiel

Im folgenden Codebeispiel wird mithilfe des BindingContext eine BindingManagerBase für eine bestimmte Datenquelle zurückgegeben. (Im Beispiel wird davon ausgegangen, dass Sie myBindingManagerBase im Declarations-Abschnitt des Moduls deklariert haben.) Anschließend werden im Beispiel dem CurrentChanged-Ereignis und dem PositionChanged-Ereignis Ereignisdelegaten hinzugefügt. Zum Schluss enthält das Beispiel vier Methoden (MoveNext, MovePrevious, MoveFirst und MoveLast), die den Wert der Position-Eigenschaft inkrementieren oder dekrementieren und Position auf die erste oder letzte Zeile der Liste festlegen. Die letzte Zeile der Liste wird mithilfe der Count-Eigenschaft bestimmt.

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

Vererbungshierarchie

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

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

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

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

BindingManagerBase-Member
System.Windows.Forms-Namespace
BindingSource
BindingContext-Klasse
CurrencyManager
PropertyManager