You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: web/docs/01-cours/11-winforms.md
+19-12Lines changed: 19 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -107,7 +107,7 @@ public class FenetrePrincipale : Form
107
107
### 🧰 La boîte à outil
108
108
Écrire tout ceci à la main est long et fastidieux. La boîte à outil est là pour nous aider. Elle est accessible par le menu **`Affichage➡️Boîte à outils`** ou tout simplement avec le raccourcis **`ctrl-alt-x`**. Avec cetoutil, ilestmaintenantpossibled'ajouter, positionner, dimensionnerlescontrôlesdelafenêtreenn'utilisantquelasouris. Nousauronsdoncrarement à créerobjetsdecontrôlesmanuellement.
109
109
110
-

110
+

@@ -120,7 +120,7 @@ Comme vous pouvez remarquer, il y a une quantité incroyable de contrôles. Nous
120
120
L'outildeconception, appelé **Designer** dansVisualStudio, estpratiqueetcomplexe. Ilpermetdegénérerlecodedescontrôlesautomatiquementlorsqu'onlesglissedelaboîte à outilsverslafenêtreetlorsqu'onlesmodifie à partirdelafenêtredepropriétés. Ledesignerremarqueleschangementsapportésauxcontrôlesetajustelecodeaufuret à mesuredeschangements.
Lorsqu'on utilise le volet graphique du designer, les propriétés des objets peuvent être changées sans avoir à écrire du code. Il suffit de choisir sa composante en cliquant dessus ou en choississant son nom dans le menu déroulant de la **`🔧Fenêtre de propriété (F4)`**.
@@ -197,7 +197,7 @@ public partial class FenetrePrincipale : Form
197
197
### 🥊 `Form.cs` vs `Form.Designer.cs`
198
198
Unpetitmotclé C# s'est glissé sans que l'ons'en rende compte. Vous remarquerez dans la définition de la classe que le mot **`partial`** est apparu. Il est très important, car il indique que la classe FenetrePricipale est définie à **deux endroits**! On retrouve la classe **`FenetrePricipale`** dans **`FenetrePricipale.cs`** **ET** dans **`FenetrePrincipale.Designer.cs`**.
Lecodequenousallons écriredevra êtreinséré dans**`FenetrePrincipale.cs`**. Cependant, lecodegénéré parledesignervaseretrouverdans**`FenetrePrincipale.Designer.cs`**. Ilestimportantd'éviter de modifier le code dans le **`.Designer.cs`** car nous n'avonspasnécessairementlecontrôledecequiest écrit.
203
203
@@ -256,7 +256,7 @@ Une étiquette est un contrôle de la classe **`System.Windows.Forms.Label`**. E
256
256
Lepréfixepourune étiquetteest**`lbl`**.
257
257
:::
258
258
259
-

259
+

260
260
261
261
```csharp
262
262
/// <summary>
@@ -286,7 +286,7 @@ Une boîte de texte est un contrôle de la classe **`System.Windows.Forms.TextBo
286
286
Lepréfixepouruneboîtedetexteest**`txt`**.
287
287
:::
288
288
289
-

289
+

290
290
291
291
```csharp
292
292
/// <summary>
@@ -313,7 +313,7 @@ Un bouton est un contrôle de la classe **`System.Windows.Forms.Button`**. Il pe
313
313
Lepréfixepourunboutonest**`btn`**.
314
314
:::
315
315
316
-

316
+

317
317
318
318
```csharp
319
319
/// <summary>
@@ -342,19 +342,19 @@ Un événement en C# WinForms est un signal émis par un contrôle (bouton, form
342
342
343
343
Danslafenêtre**`Propriétés`**, ilestpossibled'ajouter des événements. Sous le nom de l'objetdecontrôlesélectionné, ilexisteplusieursboutons. Lequatrièmeestlebouton**`Événements'** qui va basculer la liste des propriétés vers la liste des événements disponibles pour ce contrôle.
344
344
345
-

345
+

346
346
347
347
:::tip
348
348
Ilarrivesouventd'ajouter un événement clic par erreur en double cliquant le contrôle au lieu de le sélectionner. Il est possible d'effacercet événements. Parcontresil'événement à été effacé dans le fichier de la fenêtre (**`FenetrePricipale.cs`**), il est possible de venir corriger le designer en allant effacer l'événementdansl'**`InitializeComponent()`** du designer de la fenêtre (**`FenetrePricipale.Designer.cs`**).
Les événementsgénérésparledesignersontplacésdanslefichierdenotrefenêtre. Dansl'exemple ici, il sera dans **`FenetrePrincipale.cs`**. Malheureusement lorsqu'oncliquesurnotrefenêtredansl'**`Explorateur de solutions`**, Visual Studio nous ouvre le designer. Pour voir le code derrière, il faut faire un clique droit de la souris sur notre fenêtre et choisir **`<> Afficher le code`**. Un raccourcis clavier existe qui est **`F7`**.
Dans cet exercice, vous devez créer une application Windows Forms en c#. Votre fenêtre devra être en mesure de prendre un prénom et un nom. Lorsqu'on appuie sur le bouton **`Bonjour!`**, une boîte de message devra appraraîte avec le message : **"Bonjour prenom nom!"**.
32
+
33
+
Dans la fenêtre, vous devrez ajouter:
34
+
- Une **étiquette** et une **boîte** de texte pour le **prénom**.
35
+
- Une **étiquette** et une **boîte** de texte pour le **nom**.
36
+
- Un **bouton** bonjour qui affichera, par un événement **`click`**, le message dans une **`MessageBox`**.
37
+
38
+
:::warning
39
+
Vous devrez valider les champs **prénom** et **nom**. Ils ne doivent pas être vide. Affichez un message d'erreur dans ce cas.
40
+
:::
41
+
42
+
Voici un exemple du résultat attendu:
43
+
44
+

45
+
46
+
47
+
---
48
+
49
+
## 📥 MessageBox
50
+
51
+
La boîte de message est un outil essentiel pour les applications utilisant Windows Forms. Elle permet d'afficher une petite fenêtre d'information pour l'utilisateur. Elle est souvent utiliser pour afficher des messages d'erreur, d'information ou d'avertissement. Cette fenêtre apparaît lorsqu'on l'appel avec la méthode **`Show()`**.
52
+
53
+
La méthode **`Show()`** a pour paramètre:
54
+
- Le message en `string`.
55
+
- Le titre en `string`.
56
+
- Un enum pour les boutons.
57
+
- Un enum pour l'icône affiché.
58
+
59
+
```csharp
60
+
MessageBox.Show("Le message", "Le titre", MessageBoxButtons.OK, MessageBoxIcon.Information);
61
+
```
62
+
63
+

Dans cet exercice, vous devez créer une application Windows Forms en c#. Votre fenêtre devra être en mesure de prendre une température en Fahrenheit et de la convertir en degré Celsius.
20
+
21
+
Dans la fenêtre, vous devrez ajouter:
22
+
- Une **étiquette** d'instruction.
23
+
- Une **boîte de texte** et une **étiquette** pour la température en **Fahrenheit**.
24
+
- Un **bouton** convertir qui affichera, par un événement **`click`**, le résultat dans une étiquette.
25
+
- Une **étiquette** résultat et une **étiquette** pour l'unité **Celcius**.
26
+
27
+
:::tip
28
+
La formule pour transformer la température Fahrenheit en degré Celcius est la suivante: **celcius = (fahrenheit - 31) * 5 / 9**. Si vous n'êtes pas en mesure de convertir le texte pour la température Fahrenheit, vous pouvez tout simplement afficher un texte vite pour la température en celcius. Essayez d'afficher seulement deux chiffres après la virgule.
29
+
:::
30
+
31
+
Voici un exemple du résultat attendu:
32
+
33
+

Dans cet exercice, vous devez créer une application Windows Forms en c#. Les fenêtres sont déjà créées, mais vous aurez à les afficher et les cacher au bon moment.
20
+
21
+
Voici les fenêtres et l'ordre dans lesquels elles doivent apparaître:
22
+
1. La fenêtre du mot de passe (**`FormMotDePasse`**)
23
+
- Elle doit permettre d'identifier un utilisateur par son nom et son mot de passe.
24
+
- Utiliser les constantes **`UTILISATEUR`** et **`MOT_DE_PASSE`** pour valider les accès.
25
+
- Si l'accès est refuser, indiquez le dans un **`MessageBox`**.
26
+
- Lorsque l'utilisateur est validé, il faut passer à la fenêtre **`FormContratLicence`**.
27
+
2. La fenêtre du contrat de license **`FormContratLicence`**
28
+
- Ajouter un événement sur la boîte de texte **`txtReponse`** qui vérifie si le texte à changé (**`TextChanged`**).
29
+
- Dès que le texte est **oui**, il faut passer à la fenêtre **`FormRepertoireExistant`**.
30
+
3. La fenêtre du répertoire existant **`FormRepertoireExistant`**
31
+
- Vous devrez ajouter un événement au bouton **`btnVerifier`** qui vérifie si le contenu de la boîte de texte est un fichier ou un répertoire existant.
32
+
- Si le fichier ou le répertoire existe, changer le texte de **`lblReponse`** à **OUI!** en vert.
33
+
- Sinon, changer le texte de **`lblReponse`** à **NON!** en rouge.
34
+
- Vous devrez ajouter un événement au bouton **`btnQuitter`** pour fermer le logiciel.
35
+
36
+
:::tip
37
+
Pour comparer des chaînes de caractère entre elle, il est recommandé de transformer la case soit tout en minuscule(**`.ToLower()`**) ou tout en majuscule(**`.ToUpper()`**).
38
+
:::
39
+
40
+
---
41
+
42
+
## 🪟 Fermer une fenêtre
43
+
Il existe deux façons de fermer une fenêtre. La première est la méthode **`.Close()`**. Celle-ci va fermer la fenêtre et puisque souvent notre fenêtre est celle qui est exécuté comme fil principale du programme (**`Application.Run(new FenetrePrincipale());`**), l'application va aussi être fermé. Lorsque nous utilisons plusieurs fenêtre, il serait peut-être préférable de cacher la fenêtre au lieu de la fermer.
44
+
45
+
```csharp
46
+
// ceci ✅
47
+
this.Hide();
48
+
FormSecondaireliscence=newFormSecondaire();
49
+
liscence.Show();
50
+
51
+
// au lien de ceci ❌, qui va fermer l'application
52
+
this.Close();
53
+
FormSecondaireliscence=newFormSecondaire();
54
+
liscence.Show();
55
+
```
56
+
57
+
---
58
+
59
+
## 📂 Fichier ou répertoire existant
60
+
61
+
Nous avons appris avec les fichiers **.csv** que pour vérifier leur existance, nous utilisions **`File.Exists()`**. Il existe le même principe pour les répertoires.
62
+
63
+
```csharp
64
+
stringrepertoire="c:/EspaceLabo";
65
+
boolexiste=Directory.Exists(repertoire); // la valeur sera à true si vous êtes dans un laboratoire.
66
+
```
67
+
68
+
---
69
+
70
+
## 🏃💨 Quitter ou fermer l'application
71
+
72
+
Il est très simple de fermer notre programme. Il suffit tout simplement d'appeler la méthode **`Exit()`** de l'application. Cette méthode va informer toutes les fenêtres qu'elles doivent se fermer. Elles vont donc tous appeler leur propre méthode **`.Close()`** et tous les événements attachés (**`FormClosing`**, **`FormClosed`**)
0 commit comments