Passer des données entre des formulaires
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.
Ce tutoriel fournit des instructions détaillées pour passer des données d’un formulaire à l’autre. Les tables de clients et de commandes d’un formulaire de Northwind permettent aux utilisateurs de sélectionner un client et d’afficher ses commandes dans un deuxième formulaire. Ce tutoriel indique comment créer une méthode sur le deuxième formulaire recevant des données du premier formulaire.
Remarque
Ce tutoriel n’indique qu’un seul moyen de passer les données entre formulaires. Il existe d’autres options pour transférer des données à un formulaire. Par exemple, vous pouvez créer un deuxième constructeur pour recevoir les données ou créer une propriété publique pouvant être définie avec les données du premier formulaire.
Les tâches illustrées dans ce tutoriel sont les suivantes :
Création d’un nouveau projet Application Windows Forms (.NET Framework).
Créer et configurer un jeu de données avec l’Assistant Configuration de source de données.
Sélection du contrôle à créer dans le formulaire pendant le déplacement d’éléments depuis la fenêtre Sources de données. Pour plus d’informations, consultez Définir le contrôle à créer lors d’une opération de glisser-déposer à partir de la fenêtre Sources de données.
Création de contrôles liés aux données en faisant glisser des éléments depuis la fenêtre Sources de données vers un formulaire.
Création d'un deuxième formulaire avec une grille pour afficher les données.
Création d’une requête TableAdapter pour récupérer les commandes d’un client spécifique.
Transfert de données entre formulaires.
Prérequis
Pour effectuer ce tutoriel, vous devez installer les charges de travail Développement de bureau .NET et Stockage et traitement des données dans Visual Studio. Pour les installer, ouvrez Visual Studio Installer et choisissez Modifier (ou Plus>Modifier) en regard de la version de Visual Studio que vous souhaitez modifier. Consultez Modifier Visual Studio.
Ce tutoriel utilise SQL Server Express LocalDB et l’exemple de base de données Northwind.
Si SQL Server Express LocalDB n’est pas installé, installez-le à partir de la page de téléchargement SQL Server Express, ou via le programme d’installation Visual Studio Installer. Dans Visual Studio Installer, vous pouvez installer SQL Server Express LocalDB dans le cadre de la charge de travail Traitement et stockage de données, ou l’installer comme un composant seul.
Installez l’exemple de base de données Northwind en procédant comme suit :
Dans Visual Studio, ouvrez la fenêtre de l’Explorateur d’objets SQL Server. (L’Explorateur d’objets SQL Server est installé dans le cadre de la charge de travail stockage de données et du traitement dans Visual Studio Installer.) Développez le nœud SQL Server. Cliquez avec le bouton droit sur votre instance LocalDB et sélectionnez Nouvelle requête.
Une fenêtre d’éditeur de requête s’ouvre.
Copiez le script Northwind Transact-SQL dans votre Presse-papiers. Ce script T-SQL crée la base de données Northwind à partir de zéro et la remplit avec des données.
Collez le script T-SQL dans l’éditeur de requête, puis cliquez sur le bouton Exécuter.
Peu de temps après, la requête se termine et la base de données Northwind est créée.
Créer le projet d’application Windows Forms
Dans Visual Studio, dans le menu Fichier, sélectionnez Nouveau>Projet.
Développez Visual C# ou Visual Basic dans le volet gauche, puis sélectionnez Windows Desktop.
Dans le volet central, sélectionnez le type de projet Application Windows Forms.
Nommez le projet PassingDataBetweenForms et choisissez OK.
Le projet PassingDataBetweenForms est créé et ajouté à l’Explorateur de solutions.
Créer la source de données
Pour ouvrir la fenêtre Sources de données, dans le menu Données, cliquez sur Afficher les sources de données.
Dans la fenêtre Sources de données, sélectionnez Ajouter une nouvelle source de données pour démarrer l’Assistant Configuration de source de données.
Sélectionnez Base de données dans la page Choisir un type de source de données , puis cliquez sur Suivant.
Dans la page Choisir un modèle de base de données, vérifiez que Dataset est spécifié, puis cliquez sur Suivant.
Dans la page Choisir votre connexion de données, effectuez l’une des opérations suivantes :
Si une connexion de données à l'exemple de base de données Northwind est disponible dans la liste déroulante, sélectionnez-la.
Sélectionnez Nouvelle connexion pour afficher la boîte de dialogue Ajouter/Modifier la connexion.
Si votre base de données nécessite un mot de passe et si l’option permettant d’inclure les données sensibles est activée, sélectionnez l’option, puis cliquez sur Suivant.
Dans la page Enregistrer la chaîne de connexion dans le fichier de configuration de l’application, cliquez sur Suivant.
Dans la page Choisir vos objets de base de données, développez le nœud Tables.
Sélectionnez les tables Customers et Orders, puis cliquez sur Terminer.
NorthwindDataSet est ajouté à votre projet, et les tables Customers et Orders apparaissent dans la fenêtre Sources de données.
Créer le premier formulaire (Form1)
Vous pouvez créer une grille liée aux données (un contrôle DataGridView) en faisant glisser le nœud Customers depuis la fenêtre Sources de données vers le formulaire.
Pour créer une grille liée aux données dans le formulaire
Faites glisser le nœud Customers depuis la fenêtre Sources de données vers Form1.
Un DataGridView et une barre d’outils (BindingNavigator) pour parcourir les enregistrements apparaissent sur Form1. NorthwindDataSet, CustomersTableAdapter, BindingSource et BindingNavigator s’affichent dans la barre d’état des composants.
Créer le deuxième formulaire
Créez un deuxième formulaire auquel transférer les données.
Dans le menu Projet, choisissez Ajouter un formulaire Windows.
Laissez le nom par défaut (Form2), puis cliquez sur Ajouter.
Faites glisser le nœud Orders principal depuis la fenêtre Sources de données vers Form2.
Un DataGridView et une barre d’outils (BindingNavigator) pour parcourir les enregistrements apparaissent sur Form2. NorthwindDataSet, CustomersTableAdapter, BindingSource et BindingNavigator s’affichent dans la barre d’état des composants.
Supprimez OrdersBindingNavigator de la barre d’état des composants.
OrdersBindingNavigator disparaît de Form2.
Ajouter une requête TableAdapter
Ajoutez une requête TableAdapter à Form2 pour charger les commandes du client sélectionné dans Form1.
Double-cliquez sur le fichier NorthwindDataSet.xsd dans l’Explorateur de solutions.
Cliquez avec le bouton droit sur OrdersTableAdapter et sélectionnez Ajouter une requête.
Laissez l’option par défaut (Utiliser des instructions SQL), puis cliquez sur Suivant.
Laissez l’option par défaut (SELECT qui retourne des lignes), puis cliquez sur Suivant.
Ajoutez une clause WHERE à la requête pour retourner
Orders
en fonction deCustomerID
. La requête doit ressembler à la suivante :SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry FROM Orders WHERE CustomerID = @CustomerID
Notes
Vérifiez que la syntaxe du paramètre est correcte pour votre base de données. Par exemple, dans Microsoft Access, la clause WHERE est de type :
WHERE CustomerID = ?
.Cliquez sur Suivant.
Pour Nom de la méthode de remplissage DataTableMethod, tapez
FillByCustomerID
.Désactivez l’option Retourner un DataTable, puis cliquez sur Suivant.
Cliquez sur Terminer.
Créer une méthode sur Form2 pour transférer les données à ce formulaire
Cliquez avec le bouton droit sur Form2 et sélectionnez Afficher le code pour ouvrir Form2 dans l’Éditeur de code.
Ajoutez le code suivant à Form2 après la méthode
Form2_Load
:
internal void LoadOrders(String CustomerID)
{
ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
}
Créer une méthode sur Form1 pour transférer les données et afficher Form2
Dans Form1, cliquez avec le bouton droit sur la grille de données Customer, puis cliquez sur Propriétés.
Dans la fenêtre Propriétés, cliquez sur Événements.
Double-cliquez sur l’événement CellDoubleClick.
L'éditeur de code apparaît.
Mettez à jour la définition de la méthode pour qu'elle corresponde à l'exemple suivant :
private void customersDataGridView_DoubleClick(object sender, EventArgs e)
{
System.Data.DataRowView SelectedRowView;
NorthwindDataSet.CustomersRow SelectedRow;
SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current;
SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row;
Form2 OrdersForm = new Form2();
OrdersForm.LoadOrders(SelectedRow.CustomerID);
OrdersForm.Show();
}
Exécuter l’application
Appuyez sur F5 pour exécuter l'application.
Double-cliquez sur un enregistrement client dans Form1 pour ouvrir Form2 avec les commandes de ce client.
Étapes suivantes
Selon les exigences de votre application, vous pouvez exécuter différentes étapes après le transfert de données entre formulaires. Vous pouvez apporter à ce tutoriel les améliorations suivantes :
Modification du dataset pour ajouter ou supprimer des objets de base de données. Pour plus d’informations, consultez Créer et configurer des datasets.
Ajout d'une fonctionnalité pour enregistrer des données dans la base de données. Pour plus d’informations, consultez Enregistrer les données dans la base de données.
Contenu connexe
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour