Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

15 chapitres4 h 42 minIntermédiaire

C# et Windows Forms

Cours C# Windows Forms pour le BTS SIO SLAM sur .NET 10 : contrôles, événements, DataGridView, MySQL, EF Core, API REST, tests et exercices corrigés.

Par Josselyn C., prof de BTS SIO. Mis à jour le .

L'essentiel

Windows Forms (WinForms) est la bibliothèque de .NET qui sert à créer des applications de bureau pour Windows en C# : des fenêtres, des boutons, des champs de saisie, des tableaux de données. Une telle application s'installe sur le poste de l'utilisateur, c'est un client lourd. Au BTS SIO, l'option SLAM en fait souvent une des deux réalisations de l'épreuve E6 : l'environnement exigé par le référentiel demande que tes applications couvrent au moins trois situations parmi le poste fixe (client lourd), le navigateur, le mobile et le serveur (les exigences de l'E6).

Ce cours suit un seul projet du début à la fin : GSB Ordonnances, l'application de bureau qu'un éditeur de logiciels fictif, GSB, fournit aux cabinets médicaux clients pour gérer leurs patients, leurs médecins et leurs ordonnances. Tu la construis sur .NET 10, la version à support long de Microsoft (jusqu'en novembre 2028), avec Visual Studio 2026.

À la fin de ce cours, tu sauras :

  • créer une application WinForms, poser des contrôles et réagir aux événements ;
  • valider les saisies, afficher des listes dans un DataGridView et passer d'une fenêtre à l'autre ;
  • découper ton application en couches (interface, métier, accès aux données) ;
  • lire et écrire dans MySQL avec des requêtes paramétrées, puis avec Entity Framework Core ;
  • appeler une API REST, garder l'interface réactive avec async et await ;
  • protéger la chaîne de connexion et les mots de passe, tester la couche métier et publier l'exécutable.

Avant ce cours. Ce cours ne réapprend ni le langage C# ni la programmation objet : classes, propriétés, constructeurs, héritage, interfaces et listes sont expliqués dans le cours Programmation orientée objet en C#. Tu dois aussi savoir écrire un SELECT avec jointure et un INSERT (cours SQL). Pour la théorie des architectures (MVC, couches), garde sous la main le cours Architecture MVC ; pour les API, le cours API REST.

L'environnement du cours. Windows 10 ou 11, Visual Studio 2026 Community (gratuit) avec la charge de travail « Développement .NET Desktop », le SDK .NET 10, et un serveur MySQL 8.4 ou MariaDB (local, dans Docker ou sur le serveur de ton établissement). Les paquets NuGet utilisés sont MySqlConnector 2.6, MySql.EntityFrameworkCore 10.0, BCrypt.Net-Next 4.2 et MSTest 4. Les classes du projet fil rouge ont été compilées avec le SDK .NET 10 ; la couche métier, ses tests, l'appel d'API et les requêtes Entity Framework ont été exécutés.

Comment travailler. Crée la solution au chapitre 1, puis ajoute chaque fonctionnalité au fil des chapitres. Tape le code toi-même plutôt que de le copier : c'est en corrigeant tes propres fautes de frappe que tu apprends à lire les messages du compilateur. Chaque chapitre se termine par des exercices dont la réponse est masquée.

Ton objectifChapitres à travailler en priorité
Découvrir WinForms1 à 6
Construire ta réalisation E6 en client lourd1, 6, 8, 9, 12 et 13
Préparer l'heure de réalisation de l'E65, 6, 9 et 15
Ajouter un appel de service distant à ton projet7 et 11
Réviser la sécurité pour l'E79 et 12

Sommaire

0%

C# WinForms

0 chapitre sur 15

  1. Chapitre 1 : Windows Forms en C# : c'est quoi, et créer ton premier projet23 min
  2. Chapitre 2 : Les contrôles WinForms : TextBox, ComboBox, DataGridView14 min
  3. Chapitre 3 : Les événements en C# WinForms : Click, TextChanged, Load17 min
  4. Chapitre 4 : Formulaires et boîtes de dialogue : MessageBox, ShowDialog17 min
  5. Chapitre 5 : Valider une saisie en C# : TryParse, Regex et ErrorProvider16 min
  6. Chapitre 6 : Liaison de données : BindingSource, BindingList et DataGridView18 min
  7. Chapitre 7 : async et await en WinForms : une interface qui ne se fige pas16 min
  8. Chapitre 8 : Architecture en couches : interface, métier, accès aux données19 min
  9. Chapitre 9 : Connexion C# à MySQL avec MySqlConnector31 min
  10. Chapitre 10 : Entity Framework Core avec MySQL21 min
  11. Chapitre 11 : Consommer une API REST en C# : HttpClient et JSON18 min
  12. Chapitre 12 : Sécuriser une application C# : secrets, mots de passe et données19 min
  13. Chapitre 13 : Tests unitaires en C# avec MSTest (ou xUnit)22 min
  14. Chapitre 14 : Publier une application WinForms : dotnet publish14 min
  15. Chapitre 15 : Exercices corrigés C# WinForms type E617 min
Commencer le cours

Questions fréquentes

C'est quoi Windows Forms (WinForms) ?

Windows Forms est la bibliothèque de .NET qui sert à créer des applications de bureau pour Windows en C# ou en VB.NET. On dessine les fenêtres à la souris dans le concepteur de Visual Studio, puis on écrit en C# les réactions aux événements : un clic, une saisie, l'ouverture d'une fenêtre. Une application WinForms s'installe et s'exécute sur le poste de l'utilisateur : c'est un client lourd.

WinForms est-il encore utilisé en 2026 ?

Oui. WinForms fait partie de .NET 10, la version à support long de Microsoft, qui l'a encore fait évoluer (mode sombre, fenêtres asynchrones, nouveau presse-papiers). Il équipe des milliers d'applications métier en entreprise : logiciels de caisse, de production, de cabinets médicaux. Pour une interface plus riche, on choisit WPF ; pour viser aussi le mobile ou macOS, .NET MAUI ou Avalonia (comparatif).

Faut-il utiliser .NET Framework ou .NET 10 ?

Pour un nouveau projet, .NET 10 : c'est la version LTS en cours, maintenue jusqu'en novembre 2028, et elle apporte les nouveautés du langage C#. .NET Framework 4.8.1 est l'ancienne plateforme, qui ne reçoit plus que des correctifs ; on la rencontre encore dans les applications d'entreprise plus anciennes, qu'on maintient sans forcément les migrer. Dans Visual Studio, choisis le modèle « Application Windows Forms » et non « Application Windows Forms (.NET Framework) ».

Comment connecter une application C# à une base MySQL ?

Installe le paquet NuGet MySqlConnector, crée une MySqlConnection avec une chaîne de connexion (Server=…;Database=…;User ID=…;Password=…), ouvre-la avec OpenAsync, puis exécute des MySqlCommand paramétrées : ExecuteReaderAsync pour un SELECT, ExecuteNonQueryAsync pour un INSERT, un UPDATE ou un DELETE. Range ce code dans une classe DAO, jamais dans un formulaire, et la chaîne de connexion hors du code (connexion C# à MySQL).

MySqlConnector ou MySql.Data : lequel choisir ?

Les deux sont des pilotes ADO.NET aux classes de mêmes noms. MySqlConnector est sous licence MIT, réellement asynchrone et compatible avec MariaDB ; MySql.Data est le pilote d'Oracle, sous licence GPL avec exception, très présent dans les tutoriels et les projets existants. Pour un nouveau projet, MySqlConnector est le choix le plus simple ; le code passe de l'un à l'autre en changeant le using (comparatif).

Comment afficher une table MySQL dans un DataGridView ?

Lis les lignes dans une liste d'objets avec ton DAO, place-la dans une BindingList<T>, relie-la à un BindingSource, et affecte ce BindingSource à la propriété DataSource du DataGridView. Désactive AutoGenerateColumns et règle DataPropertyName sur chaque colonne pour choisir les titres et les formats. Un DataTable rempli par un MySqlDataAdapter fonctionne aussi, mais mélange l'accès aux données et l'interface (liaison de données).

Comment passer des données d'un formulaire à un autre en C# ?

On donne les données au formulaire par son constructeur (new FrmPatientEdition(patient)), et on récupère le résultat par une propriété publique après ShowDialog() (fiche.Resultat). Pour une fenêtre non modale qui doit prévenir la fenêtre principale, on utilise un événement. Évite les contrôles rendus publics et les variables globales (passer des données).

Pourquoi mon application WinForms se fige-t-elle (« Ne répond pas ») ?

Parce qu'une opération longue (requête, appel d'API, calcul) s'exécute sur le thread de l'interface, qui ne peut plus traiter les messages de Windows. Rends le gestionnaire async et attends l'opération avec await ; pour un calcul, utilise await Task.Run(…). N'utilise jamais .Result ou .Wait() dans un formulaire : ils provoquent un interblocage (async et await).

WinForms fonctionne-t-il sur Mac ou Linux ?

Non : WinForms ne fonctionne que sous Windows, et son concepteur n'existe que dans Visual Studio sous Windows. Sur un Mac, utilise une machine virtuelle Windows 11 (.NET 10 et WinForms fonctionnent sur les processeurs ARM). Pour une application de bureau multiplateforme en C#, il faut une autre bibliothèque, comme Avalonia ou .NET MAUI.

Comment créer un fichier .exe à partir d'un projet C# ?

Utilise dotnet publish en configuration Release, par exemple dotnet publish Gsb.Ui -c Release -r win-x64 --self-contained -p:PublishSingleFile=true -o publication, ou l'assistant Publier de Visual Studio. --self-contained inclut le runtime .NET (fichier plus gros, aucun prérequis) ; --no-self-contained produit un exécutable léger qui exige le .NET Desktop Runtime sur le poste (publier l'application).