Lier des contrôles Windows Forms à des données dans des applications .NET Framework

Remarque

Les jeux de données et les classes associées sont des technologies .NET Framework héritées qui datent du début des années 2000. Elles permettent aux applications d’utiliser des données en mémoire pendant que les applications sont déconnectées de la base de données. Elles sont particulièrement utiles aux applications qui permettent aux utilisateurs de modifier des données, et de rendre ces changements persistants dans la base de données. Même si les jeux de données sont une technologie très efficace, nous vous recommandons d’utiliser Entity Framework Core pour les nouvelles applications .NET. Entity Framework offre un moyen plus naturel d’utiliser des données tabulaires en tant que modèles objet. De plus, il présente une interface de programmation plus simple.

Vous pouvez afficher des données pour les utilisateurs de votre application en liant des données à des contrôles Windows Forms. Pour créer ces contrôles liés aux données, faites glisser des éléments de la fenêtre Sources de données vers le Concepteur Windows Forms dans Visual Studio.

Data Source drag operation

Astuce

Si la fenêtre Sources de données n’est pas visible, vous pouvez l’ouvrir en choisissant Afficher>Autres fenêtres>Sources de données ou en appuyant sur Maj+Alt+D. Un projet doit être ouvert dans Visual Studio pour que vous puissiez afficher la fenêtre Sources de données.

Avant de faire glisser des éléments, vous pouvez définir le type de contrôle à lier. Différentes valeurs s’affichent selon que vous choisissez le tableau lui-même ou une colonne individuelle. Vous pouvez également définir des valeurs personnalisées. Pour un tableau, Détails signifie que chaque colonne est liée à un contrôle distinct.

Bind data source to DataGridView

Contrôles BindingSource et BindingNavigator

Le composant BindingSource remplit deux fonctions. Tout d’abord, il fournit une couche d’abstraction lors de la liaison des contrôles aux données. Les contrôles du formulaire sont liés au composant BindingSource plutôt que directement à une source de données. Deuxièmement, il peut gérer une collection d’objets. L'ajout d'un type au composant BindingSource crée une liste de ce type.

Pour plus d’informations sur le composant BindingSource, consultez :

Le contrôle BindingNavigator fournit une interface utilisateur permettant de parcourir les données affichées par une application Windows.

Lier des données dans un contrôle DataGridView

Pour un contrôle DataGridView, tout le tableau est lié à ce seul contrôle. Lorsque vous faites glisser un contrôle DataGridView vers le formulaire, une bande d’outils pour parcourir les enregistrements (BindingNavigator) s’affiche également. DataSet, TableAdapter, BindingSource et BindingNavigator s’affichent dans la barre d’état des composants. Dans l’illustration suivante, un TableAdapterManager est également ajouté, car la table Customers a une relation avec la table Orders. Ces variables sont toutes déclarées dans le code généré automatiquement en tant que membres privés dans la classe form. Le code généré automatiquement pour remplir le DataGridView se trouve dans le gestionnaire d’événements Form_Load. Le code pour enregistrer les données afin de mettre à jour la base de données se trouve dans le gestionnaire d’événements Save pour BindingNavigator. Vous pouvez déplacer ou modifier ce code en fonction des besoins.

GridView with BindingNavigator

Vous pouvez personnaliser le comportement de DataGridView et de BindingNavigator en cliquant sur la balise active dans le coin supérieur droit :

DataGridView and Binding Navigator smart tags

Si les contrôles dont votre application a besoin ne sont pas disponibles dans la fenêtre Sources de données, vous pouvez ajouter des contrôles. Pour plus d’informations, consultez Ajouter des contrôles personnalisés à la fenêtre Sources de données.

Vous pouvez également faire glisser des éléments de la fenêtre Sources de données vers des contrôles déjà présents dans un formulaire pour lier le contrôle aux données. Un contrôle qui est déjà lié à des données voit ses liaisons de données réinitialisées en fonction de l’élément le plus récemment glissé sur celui-ci. Pour être des cibles de dépôt valides, les contrôles doivent être capables d’afficher le type de données sous-jacent de l’élément déplacé sur celui-ci à partir de la fenêtre Sources de données. Par exemple, faire glisser un élément qui a un type de données DateTime sur un CheckBox n’est pas valide, car le CheckBox n’est pas capable d’afficher une date.

Lier des données dans des contrôles individuels

Lorsque vous liez une source de données à Details, chaque colonne du jeu de données est liée à un contrôle distinct.

Bind data source to details

Important

Notez que dans l’illustration précédente, vous faites glisser à partir de la propriété Orders de la table Customers, et non de la table Orders. En liant à la propriété Customer.Orders, les commandes de navigation effectuées dans DataGridView sont reflétées immédiatement dans les contrôles des détails. Si vous avez fait glisser à partir de la table Orders, les contrôles sont toujours liés au jeu de données, mais ils ne sont pas synchronisés avec DataGridView.

L’illustration suivante montre les contrôles liés aux données par défaut qui sont ajoutés au formulaire après que la propriété Orders de la table Customers est liée à Details dans la fenêtre Sources de données.

Orders table bound to details

Notez également que chaque contrôle a une balise active. Cette balise active les personnalisations qui s’appliquent uniquement à ce contrôle.