BindingContext Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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. |