Esporta (0) Stampa
Espandi tutto

Classe BindingManagerBase

Aggiornamento: novembre 2007

Gestisce tutti gli oggetti Binding associati alla stessa origine dati e allo stesso membro dati. Questa classe è astratta.

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public abstract class BindingManagerBase
public abstract class BindingManagerBase
public abstract class BindingManagerBase

La classe BindingManagerBase consente la sincronizzazione dei controlli con associazione a dati su un Windows Form associati alla stessa origine dati. Per ulteriori informazioni sull'associazione semplice di un controllo a un'origine dati, vedere la classe Binding. Si supponga, ad esempio. che un form contenga due controlli TextBox associati alla stessa origine dati, ma a colonne diverse. L'origine dati potrebbe essere un oggetto DataTable contenente nomi di clienti, mentre le colonne potrebbero contenere i nomi e i cognomi. È necessario che i due controlli siano sincronizzati per visualizzare insieme i nomi e i cognomi dello stesso cliente. La classe CurrencyManager, che eredita dalla classe BindingManagerBase, esegue questa sincronizzazione gestendo un puntatore all'elemento corrente dell'origine dati. I controlli TextBox vengono associati all'elemento corrente in modo da visualizzare le informazioni per la stessa riga. Al variare dell'elemento corrente, la classe CurrencyManager notifica tutti i controlli associati in modo che possano aggiornare i propri dati. Inoltre, è possibile impostare la proprietà Position in modo che specifichi la riga nell'oggetto DataTable a cui fanno riferimento i controlli. Per determinare il numero totale di righe dell'origine dati, utilizzare la proprietà Count.

La classe CurrencyManager è necessaria, poiché le origini dati non gestiscono necessariamente un puntatore all'elemento corrente. Le matrici e gli oggetti ArrayList, ad esempio, possono essere origini dati, ma non includono una proprietà che restituisca l'elemento corrente. Per ottenere l'elemento corrente, utilizzare la proprietà Current.

La classe PropertyManager eredita anche da BindingManagerBase e viene utilizzata per gestire la proprietà corrente di un oggetto, anziché la proprietà di un oggetto corrente di un'origine dati. Per questo motivo, è inutile tentare di impostare la proprietà Position o Count per PropertyManager.

Per creare un oggetto BindingManagerBase, utilizzare la classe BindingContext, che restituisce un oggetto CurrencyManager o un oggetto PropertyManager, a seconda dell'origine dati che si sta gestendo.

Si consiglia agli sviluppatori di soluzioni di associare direttamente i controlli a un componente BindingSource, che funge sia da origine dati che da connettore all'effettiva origine dati di destinazione. Il componente BindingSource semplifica in misura significativa sia l'associazione dati semplice che l'associazione dati complessa, inclusa la gestione della valuta tra il controllo e la relativa destinazione.

Note per gli eredi:

Quando si eredita da BindingManagerBase, è necessario sottoporre a override i seguenti membri: AddNew, Count, CancelCurrentEdit, Current, EndCurrentEdit, GetItemProperties, OnCurrentChanged, Position, RemoveAt, ResumeBinding, SuspendBinding e UpdateIsBinding.

Nell'esempio di codice riportato di seguito viene utilizzato l'oggetto BindingContext per restituire un oggetto BindingManagerBase per un'origine dati specifica. Nell'esempio si presuppone di aver già dichiarato myBindingManagerBase nella sezione Declarations del modulo. Vengono quindi aggiunti i delegati di evento agli eventi CurrentChanged e PositionChanged. Infine, nell'esempio sono riportati quattro metodi (MoveNext, MovePrevious, MoveFirst e MoveLast) che consentono di aumentare o diminuire la proprietà Position e impostare la proprietà Position sulla prima o sull'ultima riga dell'elenco. L'ultima riga dell'elenco viene determinata utilizzando la proprietà Count.

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 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


Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

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

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supportato in: 3.5, 2.0, 1.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft