Lire en anglais

Partager via


BindingContext Classe

Définition

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

C#
public class BindingContext : System.Collections.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.

C#
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");
}

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.

Note

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.

C#
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).

C#
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.

C#
comboBox1.DataSource = DataSet1;  
comboBox1.DisplayMember = "Customers.FirstName";  
this.BindingContext[dataSet1, "Customers"].Position = 1;  
C#
comboBox1.DataSource = DataSet1.Customers;  
comboBox1.DisplayMember = "FirstName";  
this.BindingContext[dataSet1.Customers].Position = 1;  

Note

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 à

Produit Versions
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Voir aussi