Partage via


BindingContext Classe

Définition

Gère la collection d'objets BindingManagerBase pour tout objet héritant de la classe Control.

public ref class BindingContext : System::Collections::ICollection
public class BindingContext : System.Collections.ICollection
type BindingContext = class
    interface ICollection
    interface IEnumerable
Public Class BindingContext
Implements ICollection
Héritage
BindingContext
Implémente

Exemples

L’exemple de code suivant crée quatre Binding objets pour lier cinq contrôles (un DateTimePicker et quatre TextBox contrôles) à plusieurs sources de données. BindingContext est ensuite utilisé pour obtenir le BindingManagerBase pour chaque source de données.

void BindControls()
{
   /* Create two Binding objects for the first two TextBox 
         controls. The data-bound property for both controls 
         is the Text property. The data source is a DataSet 
         (ds). The data member is a navigation path in the form: 
         "TableName.ColumnName". */
   text1->DataBindings->Add( gcnew Binding( "Text",ds,"customers.custName" ) );
   text2->DataBindings->Add( gcnew Binding( "Text",ds,"customers.custID" ) );

   /* Bind the DateTimePicker control by adding a new Binding. 
         The data member of the DateTimePicker is a navigation path:
         TableName.RelationName.ColumnName string. */
   DateTimePicker1->DataBindings->Add( gcnew Binding( "Value",ds,"customers.CustToOrders.OrderDate" ) );

   /* Add event delegates for the Parse and Format events to a 
         new Binding object, and add the object to the third 
         TextBox control's BindingsCollection. The delegates 
         must be added before adding the Binding to the 
         collection; otherwise, no formatting occurs until 
         the Current object of the BindingManagerBase for 
         the data source changes. */
   Binding^ b = gcnew Binding( "Text",ds,"customers.custToOrders.OrderAmount" );
   b->Parse += gcnew ConvertEventHandler( this, &Form1::CurrencyStringToDecimal );
   b->Format += gcnew ConvertEventHandler( this, &Form1::DecimalToCurrencyString );
   text3->DataBindings->Add( b );

   // Get the BindingManagerBase for the Customers table. 
   bmCustomers = this->BindingContext[ ds,"Customers" ];

   /* Get the BindingManagerBase for the Orders table using the 
         RelationName. */
   bmOrders = this->BindingContext[ds, "customers.CustToOrders"];

   /* Bind the fourth TextBox control's Text property to the
      third control's Text property. */
   text4->DataBindings->Add( "Text", text3, "Text" );
}
protected void BindControls()
{
   /* Create two Binding objects for the first two TextBox 
      controls. The data-bound property for both controls 
      is the Text property. The data source is a DataSet 
      (ds). The data member is a navigation path in the form: 
      "TableName.ColumnName". */
   text1.DataBindings.Add(new Binding
   ("Text", ds, "customers.custName"));
   text2.DataBindings.Add(new Binding
   ("Text", ds, "customers.custID"));
   
   /* Bind the DateTimePicker control by adding a new Binding. 
      The data member of the DateTimePicker is a navigation path:
      TableName.RelationName.ColumnName string. */
   DateTimePicker1.DataBindings.Add(new 
   Binding("Value", ds, "customers.CustToOrders.OrderDate"));

   /* Add event delegates for the Parse and Format events to a 
      new Binding object, and add the object to the third 
      TextBox control's BindingsCollection. The delegates 
      must be added before adding the Binding to the 
      collection; otherwise, no formatting occurs until 
      the Current object of the BindingManagerBase for 
      the data source changes. */
      Binding b = new Binding
      ("Text", ds, "customers.custToOrders.OrderAmount");
   b.Parse+=new ConvertEventHandler(CurrencyStringToDecimal);
   b.Format+=new ConvertEventHandler(DecimalToCurrencyString);
   text3.DataBindings.Add(b);

   // Get the BindingManagerBase for the Customers table. 
   bmCustomers = this.BindingContext [ds, "Customers"];

   /* Get the BindingManagerBase for the Orders table using the 
      RelationName. */ 
   bmOrders = this.BindingContext[ds, "customers.CustToOrders"];

   /* Bind the fourth TextBox control's Text property to the
   third control's Text property. */
   text4.DataBindings.Add("Text", text3, "Text");
}
Protected Sub BindControls()

   ' Create two Binding objects for the first two TextBox 
   '   controls. The data-bound property for both controls 
   '   is the Text property. The data source is a DataSet 
   '   (ds). The data member is the string 
   '   "TableName.ColumnName".
   text1.DataBindings.Add(New Binding _
      ("Text", ds, "customers.custName"))
   text2.DataBindings.Add(New Binding _
      ("Text", ds, "customers.custID"))
   
   ' Bind the DateTimePicker control by adding a new Binding. 
   '   The data member of the DateTimePicker is a 
   '   TableName.RelationName.ColumnName string.
   DateTimePicker1.DataBindings.Add(New Binding _
      ("Value", ds, "customers.CustToOrders.OrderDate"))

   ' Add event delegates for the Parse and Format events to a 
   '   new Binding object, and add the object to the third 
   '   TextBox control's BindingsCollection. The delegates 
   '   must be added before adding the Binding to the 
   '   collection; otherwise, no formatting occurs until 
   '   the Current object of the BindingManagerBase for 
   '   the data source changes.
   Dim b As Binding = New Binding _
      ("Text", ds, "customers.custToOrders.OrderAmount")
   AddHandler b.Parse,  New ConvertEventHandler(AddressOf CurrencyStringToDecimal)      
   AddHandler b.Format, New ConvertEventHandler(AddressOf DecimalToCurrencyString)
   text3.DataBindings.Add(b)

   ' Get the BindingManagerBase for the Customers table.
   bmCustomers = Me.BindingContext(ds, "Customers")

   ' Get the BindingManagerBase for the Orders table using the 
   '   RelationName.
   bmOrders = Me.BindingContext(ds, "customers.CustToOrders")

   ' Bind the fourth TextBox control's Text property to the
   ' third control's Text property.
   text4.DataBindings.Add("Text", text3, "Text")

End Sub

Remarques

Chaque Windows Form a au moins un BindingContext objet qui gère les BindingManagerBase objets du formulaire. Étant donné que la BindingManagerBase classe est abstraite, le type de retour de la Item[] propriété est un CurrencyManager ou un PropertyManager. Si la source de données est un objet qui ne peut retourner qu’une seule propriété (au lieu d’une liste d’objets), le Type est un PropertyManager. Par exemple, si vous spécifiez un TextBox comme source de données, un PropertyManager est retourné. En revanche, si la source de données est un objet qui implémente IList ou IBindingList, un CurrencyManager est retourné.

Pour chaque source de données sur un Windows Form, il existe un seul CurrencyManager ou PropertyManager. Étant donné qu’il peut y avoir plusieurs sources de données associées à un Windows Form, le BindingContext vous permet de récupérer n’importe quelle source de données particulière CurrencyManager associée.

Notes

Lors de l’utilisation de la Item[] propriété, le BindingContext crée un nouveau BindingManagerBase si celui-ci n’existe pas déjà. Cela peut entraîner une certaine confusion, car l’objet retourné peut ne pas gérer la liste (ou n’importe quelle liste) que vous envisagez. Pour éviter de renvoyer un non valide BindingManagerBase, utilisez la Contains méthode pour déterminer si le prévu BindingManagerBase existe déjà.

Si vous utilisez un contrôle de conteneur, tel qu’un GroupBoxcontrôle , Panelou TabControl, pour contenir des contrôles liés aux données, vous pouvez créer un BindingContext pour uniquement ce contrôle de conteneur et ses contrôles. Ensuite, chaque partie de votre formulaire peut être gérée par son propre BindingManagerBase. Pour plus d’informations sur la création de plusieurs BindingManagerBase objets pour la même source de données, consultez le BindingContext constructeur.

Si vous ajoutez un TextBox contrôle à un formulaire et que vous le liez à une colonne d’une table dans un jeu de données, le contrôle communique avec le BindingContext de ce formulaire. Le BindingContext, à son tour, parle au spécifique CurrencyManager de cette association de données. Si vous interrogez la Position propriété de , CurrencyManageril signale l’enregistrement actif pour la liaison de ce TextBox contrôle. Dans l’exemple de code suivant, un TextBox contrôle est lié à la FirstName colonne d’une Customers table sur le jeu de données par le dataSet1 pour BindingContext le formulaire sur lequel il se trouve.

TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")  
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");  
textBox1->DataBindings->Add("Text", dataSet1, "Customers.FirstName");  

Vous pouvez ajouter un deuxième TextBox contrôle (TextBox2) au formulaire et le lier à la LastName colonne de la Customers table dans le même jeu de données. BindingContext est conscient de la première liaison (TextBox1 à Customers.FirstName), il utilise donc la même CurrencyManager, car les deux zones de texte sont liées au même jeu de données (DataSet1).

TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")  
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");  
textBox2->DataBindings->Add("Text", dataSet1, "Customers.LastName");  

Si vous liez TextBox2 à un autre jeu de données, crée BindingContext et gère un deuxième CurrencyManager.

Il est important d’être cohérent dans la façon dont vous définissez les DataSource propriétés et DisplayMember ; sinon, le BindingContext crée plusieurs gestionnaires de devises pour le même jeu de données, ce qui entraîne des erreurs. L’exemple de code suivant montre quelques façons de définir les propriétés et les objets associés BindingContext . Vous pouvez définir les propriétés à l’aide de l’une des méthodes suivantes, à condition que vous soyez cohérent dans votre code.

ComboBox1.DataSource = DataSet1  
ComboBox1.DisplayMember = "Customers.FirstName"  
Me.BindingContext(dataSet1, "Customers").Position = 1  
comboBox1.DataSource = DataSet1;  
comboBox1.DisplayMember = "Customers.FirstName";  
this.BindingContext[dataSet1, "Customers"].Position = 1;  
comboBox1->DataSource = dataSet1;  
comboBox1->DisplayMember = "Customers.FirstName";  
this->BindingContext->get_Item(dataSet1, "Customers")->Position = 1;  
ComboBox1.DataSource = DataSet1.Customers  
ComboBox1.DisplayMember = "FirstName"  
Me.BindingContext(dataSet1.Customers).Position = 1  
comboBox1.DataSource = DataSet1.Customers;  
comboBox1.DisplayMember = "FirstName";  
this.BindingContext[dataSet1.Customers].Position = 1;  
comboBox1->DataSource = dataSet1->Customers;  
comboBox1->DisplayMember = "FirstName";  
this->BindingContext->get_Item(dataSet1->Customers)->Position = 1;  

Notes

La plupart des applications Windows Forms se lient via un BindingSource. Le BindingSource composant encapsule un CurrencyManager et expose l’interface de CurrencyManager programmation. Lorsque vous utilisez un BindingSource pour la liaison, vous devez utiliser les membres exposés par pour BindingSource manipuler « currency » (autrement dit , Position) plutôt que de passer par .BindingContext

Constructeurs

BindingContext()

Initialise une nouvelle instance de la classe BindingContext.

Propriétés

IsReadOnly

Obtient une valeur indiquant si la collection est en lecture seule.

Item[Object, String]

Obtient un BindingManagerBase qui est associé aux sources de données et données membres spécifiées.

Item[Object]

Obtient le BindingManagerBase qui est associé à la source de données spécifiée.

Méthodes

Add(Object, BindingManagerBase)

Ajoute le BindingManagerBase associé à une source de données spécifique à la collection.

AddCore(Object, BindingManagerBase)

Ajoute le BindingManagerBase associé à une source de données spécifique à la collection.

Clear()

Efface de la collection tout objet BindingManagerBase.

ClearCore()

Efface la collection.

Contains(Object)

Obtient une valeur indiquant si le BindingContext contient le BindingManagerBase associé à la source de données spécifiée.

Contains(Object, String)

Obtient une valeur indiquant si le BindingContext contient le BindingManagerBase associé aux sources de données et données membres spécifiées.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnCollectionChanged(CollectionChangeEventArgs)

Déclenche l’événement CollectionChanged.

Remove(Object)

Supprime le BindingManagerBase associé à la source de données spécifiée.

RemoveCore(Object)

Supprime le BindingManagerBase associé à la source de données spécifiée.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
UpdateBinding(BindingContext, Binding)

Associe un Binding à un nouveau BindingContext.

Événements

CollectionChanged

Lève systématiquement une exception NotImplementedException en cas de gestion.

Implémentations d’interfaces explicites

ICollection.CopyTo(Array, Int32)

Copie les éléments de la collection au niveau de l’index de collection dans un tableau spécifié.

ICollection.Count

Obtient le nombre total d'objets CurrencyManager managés par le BindingContext.

ICollection.IsSynchronized

Obtient une valeur indiquant si la collection est synchronisée.

ICollection.SyncRoot

Obtient un objet à utiliser pour la synchronisation (sécurité des threads).

IEnumerable.GetEnumerator()

Obtient un énumérateur pour la collection.

Méthodes d’extension

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

S’applique à

Voir aussi