Interfaces participant à la liaison de données
Avec ADO.NET, vous pouvez créer de nombreuses structures de données différentes pour répondre aux besoins de liaison de votre application et aux données avec lesquelles vous travaillez. Vous souhaiterez peut-être créer vos propres classes qui fourniront ou utiliseront des données dans les Windows Forms. Ces objets peuvent offrir différents niveaux de fonctionnalités et de complexité, de la liaison de données basique à la fourniture d’une prise en charge au moment du design, en passant par la vérification des erreurs, la notification des modifications ou même la prise en charge de la restauration structurée des modifications apportées aux données elles-mêmes.
Utilisateurs d’interfaces de liaison de données
Les sections suivantes décrivent deux groupes d’objets d’interface. Le premier groupe répertorie les interfaces implémentées sur les sources de données par les auteurs de sources de données. Ces interfaces sont conçues pour être utilisées par les consommateurs de sources de données, qui sont dans la plupart des cas des contrôles ou des composants Windows Forms. Le second groupe répertorie les interfaces conçues pour être utilisées par les auteurs de composants. Les auteurs de composants utilisent ces interfaces lorsqu’ils créent un composant prenant en charge la liaison de données pour une utilisation par le moteur de liaison de données Windows Forms. Vous pouvez implémenter ces interfaces dans les classes associées à votre formulaire pour activer la liaison de données. Chaque cas présente une classe qui implémente une interface permettant l’interaction avec les données. Les outils d’expérience de conception de données (RAD) de Visual Studio tirent déjà parti de cette fonctionnalité.
Interfaces pour implémentation par des auteurs de sources de données
Les interfaces suivantes sont conçues pour être utilisées par les contrôles Windows Forms :
Interface IList
Une classe qui implémente l’interface IList peut être un Array, ArrayListou CollectionBase. Il s’agit de listes indexées d’éléments de type Object. Ces listes doivent contenir des types homogènes, car le premier élément de l’index détermine le type. IList serait disponible uniquement pour la liaison au moment de l’exécution.
Remarque
Si vous souhaitez créer une liste d’objets métier pour la liaison avec Windows Forms, vous devez envisager d’utiliser le BindingList<T>fichier . Il BindingList<T> s’agit d’une classe extensible qui implémente les interfaces principales requises pour la liaison de données Windows Forms bidirectionnelle.
Interface IBindingList
Une classe qui implémente l’interface IBindingList fournit un niveau beaucoup plus élevé de fonctionnalités de liaison de données. Cette implémentation fournit des fonctionnalités de tri de base et une notification des modifications, à la fois lorsque la liste des éléments change (par exemple, le champ Adresse du troisième élément d’une liste de clients change) et lorsque la liste elle-même change (par exemple, augmentation ou diminution du nombre d’éléments de la liste). La notification des modifications est importante si vous prévoyez de lier plusieurs contrôles aux mêmes données et si vous souhaitez que les modifications apportées aux données d’un contrôle se propagent à d’autres contrôles liés.
Remarque
La notification de modification est activée pour l’interface via la IBindingListSupportsChangeNotification propriété qui, lorsque
true
, déclenche un ListChanged événement, indiquant la liste modifiée ou un élément de la liste modifiée.Le type de modification est décrit par la ListChangedType propriété du ListChangedEventArgs paramètre. Par conséquent, à chaque mise à jour du modèle de données, toutes les vues dépendantes, comme les autres contrôles liés à la même source de données, seront également mises à jour. Toutefois, les objets contenus dans la liste devront notifier la liste lorsqu’ils changent afin que la liste puisse déclencher l’événement ListChanged .
Remarque
Fournit BindingList<T> une implémentation générique de l’interface IBindingList .
Interface IBindingListView
Une classe qui implémente l’interface IBindingListView fournit toutes les fonctionnalités d’une implémentation, IBindingListainsi que le filtrage et les fonctionnalités de tri avancées. Cette implémentation offre un filtrage basé sur les chaînes ainsi que le tri multicolonne avec des paires direction-descripteur de propriété.
Interface IEditableObject
Une classe qui implémente l’interface IEditableObject permet à un objet de contrôler le moment où les modifications apportées à cet objet sont rendues permanentes. Cette implémentation vous offre les méthodes et CancelEdit les BeginEditEndEditméthodes qui vous permettent de restaurer les modifications apportées à l’objet. Voici une brève explication du fonctionnement des BeginEditEndEditméthodes et CancelEdit du fonctionnement des méthodes et de leur fonctionnement en collaboration avec les autres pour permettre une restauration possible des modifications apportées aux données :
La BeginEdit méthode signale le début d’une modification sur un objet. Un objet qui implémente cette interface doit stocker les mises à jour après l’appel de méthode BeginEdit de telle sorte que les mises à jour puissent être dissoûtées carte si la CancelEdit méthode est appelée. Dans windows Forms de liaison de données, vous pouvez appeler BeginEdit plusieurs fois dans l’étendue d’une transaction d’édition unique (par exemple, , BeginEdit, BeginEditEndEdit). Les implémentations de IEditableObject doivent suivre si BeginEdit elles ont déjà été appelées et ignorer les appels suivants à BeginEdit. Étant donné que cette méthode peut être appelée plusieurs fois, il est important que les appels suivants soient non destructeurs ; autrement dit, les appels suivants BeginEdit ne peuvent pas détruire les mises à jour qui ont été apportées ou modifier les données enregistrées lors du premier BeginEdit appel.
La EndEdit méthode envoie (push) toutes les modifications depuis BeginEdit qu’elle a été appelée dans l’objet sous-jacent, si l’objet est actuellement en mode édition.
La CancelEdit méthode dis carte toute modification apportée à l’objet.
Pour plus d’informations sur le fonctionnement de la BeginEditbase de données, EndEditCancelEdit consultez Enregistrer les données dans la base de données.
Cette notion transactionnelle de fonctionnalité de données est utilisée par le DataGridView contrôle.
Interface ICancelAddNew
Une classe qui implémente l’interface ICancelAddNew implémente généralement l’interface IBindingList et vous permet de restaurer un ajout effectué à la source de données avec la AddNew méthode. Si votre source de données implémente l’interface IBindingList , vous devez également l’implémenter ICancelAddNew .
Interface IDataErrorInfo
Une classe qui implémente l’interface IDataErrorInfo permet aux objets d’offrir des informations d’erreur personnalisées aux contrôles liés :
Interface IEnumerable
Une classe qui implémente l’interface IEnumerable est généralement consommée par ASP.NET. La prise en charge de Windows Forms pour cette interface est disponible uniquement via le BindingSource composant.
Remarque
Le BindingSource composant copie tous les IEnumerable éléments dans une liste distincte à des fins de liaison.
Interface ITypedList
Une classe de collections qui implémente l’interface ITypedList permet de contrôler l’ordre et l’ensemble de propriétés exposées au contrôle lié.
Remarque
Lorsque vous implémentez la GetItemProperties méthode et que le PropertyDescriptor tableau n’est pas null, la dernière entrée du tableau est le descripteur de propriété qui décrit la propriété de liste qui est une autre liste d’éléments.
Interface ICustomTypeDescriptor
Une classe qui implémente l’interface ICustomTypeDescriptor fournit des informations dynamiques sur elle-même. Cette interface est similaire à ITypedList celle utilisée pour les objets plutôt que pour les listes. Cette interface est utilisée pour DataRowView projeter le schéma des lignes sous-jacentes. Une implémentation simple est ICustomTypeDescriptor fournie par la CustomTypeDescriptor classe.
Remarque
Pour prendre en charge la liaison au moment du design aux types qui implémentent ICustomTypeDescriptor, le type doit également implémenter IComponent et exister en tant qu’instance sur le formulaire.
Interface IListSource
Une classe qui implémente l’interface IListSource active la liaison basée sur la liste sur des objets non-list. La GetList méthode d’utilisation IListSource est utilisée pour renvoyer une liste pouvant être liée à partir d’un objet qui n’hérite pas de IList. IListSource est utilisé par la DataSet classe.
Interface IRaiseItemChangedEvents
Une classe qui implémente l’interface IRaiseItemChangedEvents est une liste pouvant être liée qui implémente également l’interface IBindingList . Cette interface est utilisée pour indiquer si votre type déclenche ListChanged des événements de type ItemChanged via sa RaisesItemChangedEvents propriété.
Remarque
Vous devez implémenter si IRaiseItemChangedEvents votre source de données fournit la propriété pour répertorier la conversion d’événements décrite précédemment et interagir avec le BindingSource composant. Dans le cas contraire, la BindingSource propriété effectue également la conversion d’événements de liste, ce qui entraîne des performances plus lentes.
Interface ISupportInitialize
Un composant qui implémente l’interface ISupportInitialize tire parti des optimisations par lots pour définir des propriétés et initialiser des propriétés dépendantes. Contient ISupportInitialize deux méthodes :
Interface ISupportInitializeNotification
Un composant qui implémente l’interface ISupportInitializeNotification implémente également l’interface ISupportInitialize . Cette interface vous permet d’informer d’autres ISupportInitialize composants que l’initialisation est terminée. L’interface ISupportInitializeNotification contient deux membres :
IsInitialized retourne une
boolean
valeur indiquant si le composant est initialisé.Initialized se produit lorsqu’il EndInit est appelé.
Interface INotifyPropertyChanged
Une classe qui implémente cette interface est un type qui déclenche un événement lorsqu’une de ses valeurs de propriété change. Cette interface est conçue pour remplacer le modèle d’événement de modification pour chaque propriété d’un contrôle. Lorsqu’il est utilisé dans un BindingList<T>objet métier, il doit implémenter l’interface INotifyPropertyChanged et bindingList'1 convertit PropertyChanged les événements en ListChanged événements de type ItemChanged.
Remarque
Pour que la notification de modification se produise dans une liaison entre un client lié et une source de données, votre type de source de données lié doit implémenter l’interface INotifyPropertyChanged (par défaut) ou vous pouvez fournir des événements propertyName
Changed
pour le type lié, mais vous ne devez pas effectuer les deux.
Interfaces pour implémentation par des auteurs de composants
Les interfaces suivantes sont conçues pour une utilisation par le moteur de liaison de données Windows Forms :
Interface IBindableComponent
Une classe qui implémente cette interface est un composant qui n’est pas un contrôle et qui prend en charge la liaison de données. Cette classe retourne les liaisons de données et le contexte de liaison du composant via les propriétés et BindingContext les DataBindings propriétés de cette interface.
Remarque
Si votre composant hérite de Control, vous n’avez pas besoin d’implémenter l’interface IBindableComponent .
Interface ICurrencyManagerProvider
Une classe qui implémente l’interface ICurrencyManagerProvider est un composant qui fournit ses propres CurrencyManager ressources pour gérer les liaisons associées à ce composant particulier. L’accès à la valeur personnalisée CurrencyManager est fourni par la CurrencyManager propriété.
Remarque
Classe qui hérite automatiquement des liaisons par le biais de Control sa BindingContext propriété. Ainsi, dans les cas où vous devez implémenter les liaisons ICurrencyManagerProvider sont assez rares.
Voir aussi
.NET Desktop feedback