BindingManagerBase Klasa

Definicja

Zarządza wszystkimi Binding obiektami powiązanymi z tym samym źródłem danych i elementem członkowskim danych. Ta klasa jest abstrakcyjna.

public ref class BindingManagerBase abstract
public abstract class BindingManagerBase
type BindingManagerBase = class
Public MustInherit Class BindingManagerBase
Dziedziczenie
BindingManagerBase
Pochodne

Przykłady

Poniższy przykład kodu używa wartości , BindingContext aby zwrócić obiekt BindingManagerBase dla określonego źródła danych. (W przykładzie założono, że zadeklarowaliśmy myBindingManagerBase w sekcji Deklaracje modułu). W tym przykładzie dodano delegatów zdarzeń do zdarzeń CurrentChanged i PositionChanged . Na koniec przykład zawiera cztery metody (MoveNext, , MoveFirstMovePreviousi MoveLast), które zwiększają lub dekrementuje Position właściwość, i ustawiają Position wartość pierwszego lub ostatniego wiersza na liście. Ostatni wiersz na liście jest określany przy użyciu Count właściwości .

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.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;
}
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

Uwagi

Funkcja BindingManagerBase umożliwia synchronizację kontrolek powiązanych z danymi w formularzu systemu Windows powiązanym z tym samym źródłem danych. (Aby uzyskać więcej informacji na temat prostego powiązania kontrolki ze źródłem danych, zobacz klasę Binding ). Załóżmy na przykład, że formularz zawiera dwie TextBox kontrolki powiązane z tym samym źródłem danych, ale z różnymi kolumnami. Źródło danych może być źródłem zawierającym DataTable nazwy klientów, podczas gdy kolumny mogą zawierać imię i nazwisko. Te dwie kontrolki muszą być zsynchronizowane, aby wyświetlić poprawne imię i nazwiska dla tego samego klienta. Element CurrencyManager, który dziedziczy z BindingManagerBase klasy, wykonuje tę synchronizację, zachowując wskaźnik do bieżącego elementu w źródle danych. Kontrolki TextBox są powiązane z bieżącym elementem, aby wyświetlały informacje dla tego samego wiersza. Po zmianie bieżącego elementu powiadamia wszystkie powiązane kontrolki, CurrencyManager aby mogły odświeżyć swoje dane. Ponadto można ustawić Position właściwość tak, aby określić wiersz w DataTable punkcie kontrolnym. Aby określić, ile wierszy istnieje w źródle danych, użyj Count właściwości .

Jest CurrencyManager to konieczne, ponieważ źródła danych niekoniecznie utrzymują wskaźnik bieżącego elementu. Na przykład tablice i ArrayList obiekty mogą być źródłami danych, ale nie mają właściwości zwracającej bieżący element. Aby uzyskać bieżący element, użyj Current właściwości .

Element PropertyManager dziedziczy również z BindingManagerBaseobiektu i jest używany do obsługi bieżącej właściwości obiektu, a nie właściwości bieżącego obiektu w źródle danych. Z tego powodu próba ustawienia Position właściwości or Count nie PropertyManager ma wpływu.

Aby utworzyć klasę BindingManagerBase, użyj BindingContext klasy, która zwraca wartość lub CurrencyManagerPropertyManager, w zależności od zarządzanego źródła danych.

Deweloperzy rozwiązań zachęcają do powiązania kontrolek bezpośrednio z składnikiem BindingSource , który działa zarówno jako źródło danych, jak i łącznik danych do rzeczywistego docelowego źródła danych. BindingSource znacznie upraszcza zarówno proste, jak i złożone powiązanie danych, w tym zarządzanie walutą między kontrolką a jej celem.

Uwagi dotyczące implementowania

Po dziedziczeniu z BindingManagerBaseprogramu należy zastąpić następujące abstrakcyjne elementy członkowskie: AddNew(), CancelCurrentEdit()EndCurrentEdit()GetItemProperties()OnCurrentChanged(EventArgs)CurrentCountRemoveAt(Int32)ResumeBinding()PositionSuspendBinding()i .UpdateIsBinding()

Konstruktory

BindingManagerBase()

Inicjuje nowe wystąpienie klasy BindingManagerBase.

Pola

onCurrentChangedHandler

Określa procedurę obsługi zdarzeń CurrentChanged dla zdarzenia.

onPositionChangedHandler

Określa procedurę obsługi zdarzeń PositionChanged dla zdarzenia.

Właściwości

Bindings

Pobiera kolekcję powiązań zarządzanych.

Count

Po zastąpieniu klasy pochodnej pobiera liczbę wierszy zarządzanych przez klasę BindingManagerBase.

Current

Po przesłonięciu w klasie pochodnej pobiera bieżący obiekt.

IsBindingSuspended

Pobiera wartość wskazującą, czy powiązanie jest zawieszone.

Position

Po zastąpieniu w klasie pochodnej pobiera lub ustawia pozycję na liście bazowej, która steruje powiązanym z tym punktem źródła danych.

Metody

AddNew()

Po przesłonięciu w klasie pochodnej dodaje nowy element do listy bazowej.

CancelCurrentEdit()

Gdy zastąpisz klasę pochodną, anuluje bieżącą edycję.

EndCurrentEdit()

Po zastąpieniu w klasie pochodnej kończy bieżącą edycję.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetItemProperties()

Po przesłonięciu w klasie pochodnej pobiera kolekcję deskryptorów właściwości dla powiązania.

GetItemProperties(ArrayList, ArrayList)

Pobiera kolekcję deskryptorów właściwości dla powiązania przy użyciu określonego ArrayListelementu .

GetItemProperties(Type, Int32, ArrayList, ArrayList)

Pobiera listę właściwości elementów zarządzanych przez ten BindingManagerBaseelement .

GetListName(ArrayList)

Po zastąpieniu w klasie pochodnej pobiera nazwę listy dostarczającej dane dla powiązania.

GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnBindingComplete(BindingCompleteEventArgs)

BindingComplete Zgłasza zdarzenie.

OnCurrentChanged(EventArgs)

CurrentChanged Zgłasza zdarzenie.

OnCurrentItemChanged(EventArgs)

CurrentItemChanged Zgłasza zdarzenie.

OnDataError(Exception)

DataError Zgłasza zdarzenie.

PullData()

Pobiera dane z kontrolki powiązanej z danymi do źródła danych i nie zwraca żadnych informacji.

PushData()

Wypycha dane ze źródła danych do kontrolki powiązanej z danymi i nie zwraca żadnych informacji.

RemoveAt(Int32)

Po zastąpieniu w klasie pochodnej usuwa wiersz w określonym indeksie z listy bazowej.

ResumeBinding()

Po przesłonięciu w klasie pochodnej wznawia powiązanie danych.

SuspendBinding()

Gdy zastąpisz klasę pochodną, zawiesza powiązanie danych.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
UpdateIsBinding()

Po przesłonięciu w klasie pochodnej aktualizuje powiązanie.

Zdarzenia

BindingComplete

Następuje po zakończeniu operacji powiązania danych.

CurrentChanged

Występuje, gdy aktualnie powiązany element ulegnie zmianie.

CurrentItemChanged

Występuje, gdy stan aktualnie powiązanego elementu ulegnie zmianie.

DataError

Występuje, gdy Exception element jest w trybie dyskretnym obsługiwanym przez BindingManagerBaseelement .

PositionChanged

Występuje po zmianie wartości Position właściwości.

Dotyczy

Zobacz też