BindingContext Classe

Définition

Gère la collection d’objets BindingManagerBase pour tous les objets qui héritent de la Control classe.

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. Il BindingContext est ensuite utilisé pour obtenir la BindingManagerBase source de données 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 formulaire Windows a au moins un objet BindingContext qui gère les objets BindingManagerBase pour le 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), il s’agit Type d’un PropertyManagerobjet . Par exemple, si vous spécifiez une TextBox source de données, une PropertyManager valeur est retournée. En revanche, si la source de données est un objet qui implémente IList ou IBindingListest CurrencyManager retourné.

Pour chaque source de données sur un formulaire Windows, il existe un seul CurrencyManager ou PropertyManager. Étant donné qu’il peut y avoir plusieurs sources de données associées à un formulaire Windows, le BindingContext vous permet de récupérer tout CurrencyManager particulier associé à une source de données.

Note

Lors de l’utilisation de la Item[] propriété, la BindingContext création d’un élément BindingManagerBase s’il n’existe pas déjà. Cela peut entraîner une certaine confusion, car l’objet retourné peut ne pas gérer la liste (ou toute liste) que vous envisagez. Pour empêcher le retour d’un non valide BindingManagerBase, utilisez la Contains méthode pour déterminer si l’objet prévu BindingManagerBase existe déjà.

Si vous utilisez un contrôle conteneur, tel qu’un GroupBoxcontrôle , Panelou TabControl, pour contenir des contrôles liés aux données, vous pouvez créer un BindingContext contrôle pour ce conteneur et ses contrôles. Ensuite, chaque partie de votre formulaire peut être gérée par ses propres 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 ce BindingContext formulaire. Le BindingContext, à son tour, parle à l’association de données spécifique CurrencyManager . Si vous avez interrogé la Position propriété du CurrencyManagercontrôle, elle 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 dataSet1 jeu de données par le biais du BindingContext formulaire sur lequel il se trouve.

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. Il BindingContext est conscient de la première liaison (TextBox1 à Customers.FirstName), de sorte qu’elle utilise 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");

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

Il est important d’être cohérent sur la façon dont vous définissez les DataSource propriétés DisplayMember ; sinon, il 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 leurs objets associés BindingContext . Vous pouvez définir les propriétés à l’aide de l’une des méthodes suivantes, tant que vous êtes cohérent tout au long de 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.Customers
ComboBox1.DisplayMember = "FirstName"
Me.BindingContext(dataSet1.Customers).Position = 1
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 une CurrencyManager interface de programmation et expose l’interface de CurrencyManager programmation. Lorsque vous utilisez une BindingSource liaison, vous devez utiliser les membres exposés par la BindingSource manipulation de « devise » (autrement dit, Position) plutôt que de passer par le BindingContext.

Constructeurs

Nom Description
BindingContext()

Initialise une nouvelle instance de la classe BindingContext.

Propriétés

Nom Description
IsReadOnly

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

Item[Object, String]

Obtient un BindingManagerBase élément associé à la source de données et au membre de données spécifiés.

Item[Object]

Obtient l’élément BindingManagerBase associé à la source de données spécifiée.

Méthodes

Nom Description
Add(Object, BindingManagerBase)

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

AddCore(Object, BindingManagerBase)

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

Clear()

Efface la collection d’objets BindingManagerBase .

ClearCore()

Efface la collection.

Contains(Object, String)

Obtient une valeur indiquant si le BindingContext conteneur contient la source de données et le BindingManagerBase membre de données spécifiés.

Contains(Object)

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

Equals(Object)

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

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

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

Déclenche l’événement CollectionChanged.

Remove(Object)

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

RemoveCore(Object)

Supprime l’associé BindingManagerBase à 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 nouveau BindingContext.

Événements

Nom Description
CollectionChanged

Déclenche toujours une NotImplementedException fois géré.

Implémentations d’interfaces explicites

Nom Description
ICollection.CopyTo(Array, Int32)

Copie les éléments de la collection dans un tableau spécifié, en commençant à l’index de la collection.

ICollection.Count

Obtient le nombre total d’objets CurrencyManager géré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

Nom Description
AsParallel(IEnumerable)

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

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

Cast<TResult>(IEnumerable)

Convertit les éléments d’un IEnumerable en type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d’une IEnumerable en fonction d’un type spécifié.

S’applique à

Voir aussi