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