Objectif
Réaliser une application permettant d'additionner 2 chiffres.
L’application ne comporte qu’un seul écran décrit ci- dessous :
Résultat attendu
Traitement effectué:
Au fur et à mesure où les chiffres sont saisis dans les zones 'Nombre 1' et 'Nombre 2' le calcul s'effectue automatiquement dans la zone 'Somme'.
- Le bouton 'Remise à blanc' efface les trois zones et place le point d'insertion dans la zone 'Nombre 1'
- Cliquer sur "Quitter" qui provoque l'arrêt du programme avec affichage préalable du message suivant:
Eléments utiles
Classe | Type | Membre | Description |
Control | P | Text | Texte affiché |
Control | P | TextAlign | Alignement du texte (gauche, droite…) |
Control | E | Click | Evènement Click effectué avec la souris |
TextBox | E | TextChanged | Evènement Propriété Text modifiée |
double | M | Parse | Convertit la représentation sous forme de chaîne d'un nombre en nombre en virgule flottante double précision équivalent. |
Si vous avez du temps
Si vous cliquez sur la case de fermeture et non sur le bouton quitter, le message 'Au revoir' ne s'affiche pas. Faites en sorte de résoudre ce problème.
Objectif
Savoir créer une application et mettre en œuvre quelques contrôles élémentaires, boutons, zones de texte et label, zone de groupe ou cadre, boutons d'option.
But du traitement
Partant de l'exemple Addition, nous allons réaliser une calculette.
Résultat attendu
Traitement effectué
Après avoir entré un nombre dans les zones de texte libellées 'Nombre1' et 'Nombre2' et sélectionné une des options du cadre 'Opérations', on peut :
- Cliquer sur 'Ok' déclenche le calcul et l'affichage du résultat.
- Le bouton 'Remise à blanc' remet les trois zones à zéro et place le point d'insertion dans la zone 'Nombre 1'
Tant que le premier nombre n'est pas saisi et qu'aucune option n'est sélectionnée, le bouton "Ok" doit être inopérant. Dès qu'un calcul devient possible, rendre le bouton utilisable.
Dés qu'une option est choisie, le signe de l'opération (+, -, *, /, V) doit apparaître dans l'intervalle situé entre les deux nombres.
Aucune saisie ne doit être faite dans la zone résultat. Afin d'éviter de nombreuses erreurs d'exécution, faites en sorte que les 2 TextBox ne permettent de n'entrer que des chiffres.
Eléments utiles
Classe | Type | Membre | Description |
Control | P | Enabled | Indique si un contrôle est activé |
TextBox | E | KeyPress | Se produit lorsqu'un caractère est tapé |
TextBox | E | LostFocus | Se produit lorsque le contrôle perd le focus. |
Math | M | Sqrt | Retourne la racine carrée d'un nombre spécifié |
2. Cases à cocher et Boutons radio
Le contrôle CheckBox Windows Forms indique si une condition est active ou inactive. Il est couramment utilisé pour présenter à l'utilisateur des alternatives de type Oui/Non ou Vrai/Faux. Vous pouvez utiliser les contrôles CheckBox en groupes pour afficher plusieurs options parmi lesquelles l'utilisateur peut en sélectionner une ou plusieurs.
Résultat attendu
Traitement effectué
L'utilisateur compose son menu en cochant les différents plats proposés. Il valide son choix en cliquant sur le bouton 'Ok'. Les options choisies s'affichent alors dans le contrôle Label sur le côté droit.
Le bouton réinitialise tous les contrôles (Cases à cochées décochées et Label récapitulatif vide.
Le bouton 'Fermer' met fin à l'application.
L'utilisateur pourra utiliser le clavier à la place des boutons 'Ok' et 'Fermer'. La touche Entrée activera le bouton 'Ok' et la touche 'Echap' le bouton 'Fermer'.
Eléments utiles
Classe | Type | Membre | Description |
CheckBox | P | Checked | true/false indique si une case est cochée ou pas |
Control | P | Controls | Obtient la collection de contrôles contenus dans le contrôle. |
Form | P | AcceptButton | Bouton d'acceptation du formulaire (Entrée). |
Form | P | CancelButton | Bouton d'annulation du formulaire (Echap). |
Si vous avez du temps
Faites en sorte que le menu récapitulatif (Label de droite) soit mis à jour au fur et à mesure que l'utilisateur sélectionne ou désélectionne les plats.
Objectif
Savoir gérer des cases à cocher et un groupe de boutons radios.
Proposer à l'utilisateur une boite de dialogue à 'géométrie variable'.
Résultat attendu
Dans un premier temps, la boite se présente de la façon suivante:
Une fois la première case sélectionnée, la boite doit prendre cet aspect:
Traitement effectué
L’écran dans sa forme initiale permet de cocher "Afficher les couleurs" ce qui déclenche l'extension de la fenêtre et l'affichage du groupe d'options "Couleur" contenant les boutons et jusque là non visible. Un second click remet la boite dans son état initial.
L'écran dans sa forme étendue permet de sélectionner un des boutons couleur. La couleur sélectionnée doit s'appliquer au fond de la feuille.
Eléments utiles
Elément | Type | Membre | Description |
CheckBox | P | Checked | true/false indique si une case est cochée ou pas |
Control | P | Height | Hauteur du contrôle |
Control | P | BackColor | Couleur de fond |
System.Drawing | S | Color | Structure donnant accès à un grand nombre de membre nommés de type Color. Exemples : Color. AliceBlue, Color.Red, Color.Gold… |
Color | M | FromArgb | Crée une structure Color à partir des valeurs des quatre composants ARVB 8 bits (alpha, rouge, vert et bleu). |
CheckBox et RadioButton | E | CheckedChanged | Se produit lorsque la propriété checked change de valeur. |
Objectif
Savoir utiliser les boutons d'option, en traitement individuel ou en groupe.
Résultat attendu
Traitement effectué
L'écran comporte deux contrôles de type GroupBox, 'Mon choix 1' et 'Mon choix 2' contenant des boutons radio.
Faites en sorte que chacun des boutons radio de gauche disposent de son propre gestionnaire d'évènement et que les 3 boutons radio de droite partagent le même gestionnaire d'évènement.
Les choix réalisés par l'utilisateur ne devront s'afficher dans les deux contrôles de type Label après avoir cliqué sur le bouton 'Options sélectionnées…'.
Eléments utiles
Elément | Type | Membre | Description |
Control | P | Visible | true/false, le contrôle est affiché ou pas |
Control | P | Tag | de type object, permet d'associer des données au contrôle |
Il existe en fait de multiples manières de traiter ce genre de situation. Faites preuve d'imagination. Ayez toujours comme objectif, l'efficacité et la concision de votre code.
N'oubliez pas de commenter…
3. Listes diverses
Objectif
Le but de cet atelier est de découvrir les fonctionnalités de bases communes aux différentes listes proposées dans le Framework.NET. L'exemple porte sur un contrôle de type ListBox.
Résultat attendu
Traitement effectué
En sélectionnant un élément dans la listes les 3 propriété (Items.Count, SelectedIndex et Text) sont automatiquement mises à jour.
Eléments utiles
Classe | Type | Membre | Description |
ListBox | P | Items | Collection des éléments de la liste |
Items | M | Add | Ajoute un élément à la collection Items |
Items | P | Count | Nombre d'éléments dans la collection |
ListBox | P | SelectedIndex | Index de l'élément sélectionné (à partir de 0) |
ListBox | P | SelectedItem | Elément sélectionné |
ListBox | P | Text | Texte correspondant à l'élément sélectionné |
ListBox | E | SelectedIndexChanged | Lors de la sélection d'un élément |
Si vous avez du temps
Essayer de découvrir d'autres membres intéressants de la classe ListBox susceptibles d'être utilisés selon vos besoins.
Objectif
Mettre en œuvre les différents types de listes à notre disposition : ListBox, checkedListBox et comboBox.
Au chargement du formulaire, remplir les différentes liste :
ListBox : Janvier, Février, Mars, Avril.
checkedListBox : Mai, Juin, Juillet, Août.
comboBox : Septembre, Octobre,Novembre, Décembre.
La case à cocher ‘Sélection Multiple’ permet selon son état de sélectionner un ou plusieurs éléments dans la ListBox.
Une étiquette indique en permanence le nombre d’éléments cochés dans la checkedListBox.
Une dernière étiquette récapitule les mois sélectionnés (cochés pour la checkedListBox) dans les trois listes. Cette information se met à jour en temps réel dès que l’utilisateur modifie la sélection d’une des trois listes.
Résultat attendu
Eléments utiles
Classe | Type | Membre | Description |
Tous contrôles | E | KeyUp | Touche relâchée |
Tous contrôles | E | MouseUp | Souris relâchée |
Toutes Listes | E | SelectedIndexChanged | Sélection modifiée |
Toutes Listes | M | Add | Ajout d’éléments |
Toutes Liste | P | SelectedItem | Eléments sélectionné |
ListBox | P | SelectionMode | Sélection Unique, Multiple, Etendue |
ListBox | P | SelectedItems | Collection des éléments sélectionnés |
checkedListBox | P | CheckedItems | Collection des éléments cochés |
Objectif
Etre en mesure de réaliser les opérations principales concernant les contrôle de type ListBox.
Résultat attendu
Traitement effectué
Lors du lancement de l'application, la liste 'LstListe' est vide. Le peuplement de la liste s'effectue en saisissants des valeurs dans la zone 'Nouvel Elémént' puis en pressant le bouton 'Ajout Liste'. Une fois un nouvel élément ajouté, le focus se repositionne sur 'Nouvel Elément' qui est remise à blanc.
Lorsque l'utilisateur sélectionne un élément, les propriétés affectées s'affichent à droite.
Il est également possible de sélectionner un élément en saisissant son N° dans la zone 'Index Elément' et en pressant le bouton 'Sélectionner'.
Enfin, le bouton 'Vider la liste' comme son nom le laisse supposer remet la liste à blanc.
Eléments utiles
Classe | Type | Membre | Description |
ListBox | P | SelectedIndex | Index de l'élément sélectionné (à partir de 0) |
Items | P | Count | Nombre d'élément dans la collection |
Control | M | Focus | Place le curseur (caret) sur le contrôle |
int | M | Parse | Convertit la chaîne d'un nombre en nombre entier |
Si vous avez du temps
Faites en sorte qu'un utilisateur maladroit ne puisse pas provoquer une erreur d'exécution de votre application. Exemple : s'il saisit un N° d'élément qui n'existe pas ou sous forme de texte.
Assurez-vous également qu'une valeur ne puisse pas être ajoutée deux fois dans la liste.
Objectif
Approfondissement des Listes
Créer une application permettant le déplacement d'éléments d'une liste dans une autre, ainsi que le tri de chacune des listes élément par élément.
En option, faire le tri de chacune des listes en ordre croissant et décroissant en une seule fois.
Résultat attendu
Traitement effectué
La liste de gauche s'alimente au chargement de la feuille. La liste de droite est vide au départ et est alimentée par les deux boutons '>' et '>>'.
Rôle des différents boutons :
> Déplace l'élément sélectionné de la liste de gauche à celle de droite,
< Déplace l'élément sélectionné de la liste de droite à celle de gauche,
>> Déplace la totalité de la liste de gauche vers celle de droite,
<< Déplace la totalité de la liste de droite vers celle de gauche,
é Déplace l'élément sélectionné d'une ligne vers le haut (Tri Manuel),
ê Déplace l'élément sélectionné d'une ligne vers le bas.
En option :
A-Z Trie la liste correspondante par ordre alphabétique,
Z-A Trie la liste correspondante par ordre inverse,
Faites en sorte que les différents boutons ne soient accessibles qu'à bon escient. Exemple Si l'utilisateur sélectionne le premier élément d'une liste, le bouton é devra être désactivé, de même s'il sélectionne le dernier élément d'une liste, le bouton ê sera désactivé.
Eléments utiles
Classe | Type | Membre | Description |
ListBox | M | Items.Add | Ajoute un élément à la ListBox |
ListBox | M | Items.Remove | Supprime l'élément spécifié |
ListBox | M | Items.Clear | Efface tous les éléments de la liste |
ListBox | M | Items.Insert | Insère un élément à une position donnée |
ListBox | M | Items.AddRange | Ajoute une collection d'éléments à une liste |
Conseils
Avant de vous lancer dans la programmation des différents tris, n'hésitez pas à réaliser un algorithme papier / crayon et à le 'faire tourner sur papier' à partir d'un jeux d'essai.
Bon Tri…
Objectif
Comprendre l'utilisation d'un tableau deux dimensions.
Utiliser des indices pour retrouver une information dans un tableau.
Résultat attendu
Traitement effectué
Permettre à un utilisateur de choisir un article dans une couleur donnée.
Une fois la sélection effectuée, l'application recherche dans un tableau préalablement constitué en mémoire le tarif correspondant.
On constitue en mémoire un tableau de noms et de matricules.
Pour simplifier, ce tableau est initialisé au chargement de l'application.
(On peut cependant imaginer qu'il serait garni progressivement par l'application, ou par la lecture préalable d'un fichier).
Attention : Tous les articles n'existent pas dans toutes les couleurs. Dans un tel cas le pris est à zéro et l'application affiche l'Information 'Objet inexistant dans cette couleur'.
Liste des Prix
| Rouge | Vert | Blanc | Noir | Gris |
Chaise en teck | 350.25 | | | | |
Table en teck | 750.5 | | | | |
Chaise en Pvc | 49.5 | 49.5 | 55. 5 | 55.5 | 55.5 |
Table en Pvc | | | 49 | 52 | |
Chaise de bureau Prestige | 800 | | 355 | 700 | |
Table de bureau Prestige | 1200 | 1200 | 1100 | | |
Tapis de souris | | | | | 50 |
Visual basic facile | 350 | | | | |
4. Saisie, Sélection, Edition
Objectif
Réaliser une application permettant de saisir du texte, des chiffres ainsi que des dates. L'objectif est de fournir aux utilisateurs un écran de saisie permettant d'assurer l'intégrité des données.
Pour les dates, utiliser le contrôle DateTimePicker.
Pour les chiffres, utiliser le contrôle NumericUpDown.
Ces deux type de contrôle vous permettent de simplifier votre code en filtrant les données saisies tout en améliorant l'ergonomie d votre logiciel.
Résultat attendu
Traitement effectué
Le titre de la fenêtre s'actualise en dynamique lors de la saisie de l'intitulé.
Le bouton 'Ok' ne sera pas accessible si l'utilisateur omet de renseigner ce l'intitulé.
Lorsque le focus quitte une date, le Label de droite affiche automatiquement la durée du séjour. Attention à vérifier que la date d'arrivée est postérieure à la date de départ.
De même, après avoir renseigné les champs 'Nb Places' et 'Nb Inscrits', l'étiquette de droite affichera automatiquement le nombre de places disponibles. Le nombre de places réservées ne doit pas excéder le nombre de places disponibles.
Le bouton 'Annuler' se contente de fermer la fenêtre, alors que le bouton 'Ok' affiche un message récapitulatif avant de quitter l'application.
Notez que la fenêtre principale ne possède pas de case d'agrandissement ni de réduction et ne peut être redimensionnée par l'utilisateur.
Eléments utiles
Elément | Type | Membre | Description |
System | S | DateTime | Représente un instant, généralement exprimé sous la forme d'une date ou d'une heure. |
System | S | TimeSpan | Représente un intervalle de temps. |
string | M | Format | Mise en forme de chaînes de caractères |
Si vous avez du temps
Les dates saisies ne devront pas être antérieures à la date du jour. Le nombre de places doit être supérieur à zéro.
La boite de message finale permettra de confirmer ou pas la validité des données.
Si la réponse est 'Oui', votre application simulera l'enregistrement des données en réinitialisant les contrôles du formulaire à leurs valeurs par défaut.
Date de Départ : Date du jour, Date d'Arrivée : Date du jour +1, valeurs numériques à 0, étiquettes calculées : "###", titre de la fenêtre : "Voyage :"
Si la réponse est 'Non', la boite de dialogue se ferme simplement pour permettre à l'utilisateur de corriger les données.
Objectif
Effectuer la validation de données. Gérer la saisie dans une grille comportant une zone alphabétique, une zone numérique et une zone date, comme dans la feuille ci-dessous. Transférer des informations d'un objet Form à une autre. Mettre en oeuvre le contrôle errorProvider.
Résultat attendu
Traitement effectué
Contrôler l'absence de numériques dans les champs 'Nom' et 'Prénom', la présence exclusive de chiffres dans le champ 'Code Postal', la validité des chiffres de la date de naissance, présentée selon le format défini au niveau du panneau de configuration.
En cas d'erreur de saisie, on place le curseur sur l'erreur, et on émet un Bip sonore.
Il est également possible d'afficher un message dans une barre d'état (contrôle Label). Dans ce cas il serait intéressant d'effacer le message en question dès que l'utilisateur effectue la correction.
Une fois les données correctement saisies, le fait de cliquer sur 'Ok' affiche une deuxième fenêtre intitulée 'Consultation' se présentant comme suit:
Si les éléments saisis ne se conforment pas aux contraintes spécifiées, l'utilisateur obtient le résultat suivant :
Une icône d'avertissement se place à droite de chaque champ non conforme. Lorsque l'utilisateur déplace la souris sur l'icône d'avertissement, une infobulle l'informe de la nature de l'erreur. Cette fonctionnalité passe par l'utilisation du contrôle errorProvider. Le Label faisant office de barre d'état fournit un message d'erreur général.
Dès que l'utilisateur entame une correction dans une zone, l'icône d'avertissement associé disparait, ainsi que le message d'erreur dans la barre d'état..
Eléments utiles
Elément | Type | Membre | Description |
errorProvider | M | SetError | Définit la chaîne de description de l'erreur pour le contrôle spécifié. |
char | M | IsDigit | Indique si un caractère Unicode est classé dans la catégorie des chiffres décimaux. |
Form | M | ShowDialog | Affiche le formulaire comme une boîte de dialogue modale. |
Objectif
Savoir gérer le clavier, en contrôlant la frappe et le relâchement de chaque touche.
Les évènements à traiter seront de type KeyDown, KeyPress, KeyUp.
Résultat attendu
Traitement effectué
Ouvrir un contrôle de type ListBox dans laquelle apparaîtra pour chaque touche frappée et pour chaque événement le code de touche (KeyChar) ou le code caractère (KeyChar).
Une fois lune touche relâché votre code devra sélectionner le dernier élément de la liste.
Eléments utiles
Elément | Type | Membre | Description |
Control | E | KeyDown | Se produit lorsqu'une touche est enfoncée |
Control | E | KeyPress | Se produit lorsqu'un caractère est saisi |
Control | E | KeyUp | Se produit lorsqu'une touche est relâchée |
KeyEventArgs | C | KeyCode | Données d'évènements KeyDown et KeyUp |
KeyPressEventArgs | C | KeyChar | Données d'évènement KeyPress |
ListBox | M | Items.Add | Ajout d'élément dans une liste |
ListBox | P | SelectedIndex | N° d'élément sélectionné dans une liste |
Si vous avez du temps
Approfondissez les membres fournis par KeyEventArgs et KeyPressEventArgs (Alt, Ctrl, Handle, KeyData, KeyValue, Modifiers, Shift etc…
Faites apparaître les informations qui vous semblent pertinentes dans la liste.
Objectif
Savoir traiter du texte, travailler sur une zone sélectionnée, utiliser les fonctions de traitement de caractères.
Résultat attendu
Traitement effectué
Entrer du texte dans une zone de saisie. Après sélection de ce texte, repérer les caractéristiques de la sélection à l'aide des propriétés appropriées (…).
Lorsque l'opérateur appuie sur le bouton 'Majuscules', le texte sélectionné doit être converti en majuscules. Idem pour le bouton 'Minuscule'.
Positionner correctement le focus en fin d'opération.
Afficher au bas de la feuille la position du curseur et la taille de la sélection.
Eléments utiles
Elément | Type | Membre | Description |
Tout Contrôle | E | MouseUp | Se produit lorsque le pointeur de la souris se trouve sur le contrôle et qu'un bouton de la souris est relâché. |
TextBox | P | SelectionStart | Obtient ou définit le point de départ du texte sélectionné dans la zone de texte. |
TextBox | P | SélectionLength | Obtient ou définit le nombre de caractères sélectionnés dans la zone de texte. |
TextBox | P | SelectedText | Obtient ou définit une valeur indiquant la couleur du texte sélectionné dans le contrôle. |
String | M | ToUpper | Retourne une copie de ce String en majuscules. |
String | M | ToLower | Retourne une copie de String en minuscules. |
Si vous avez du temps
Faites en sorte que votre formulaire fonctionne également si l'utilisateur utilise le clavier pour effectuer la sélection et non la souris.
Objectif
Analyser une chaîne de caractères. Localiser dans une chaîne de caractères des chiffres. Localiser dans une chaîne de caractères des chiffres pairs. Créer une méthode booléenne 'estChiffrePair' permettant de savoir si tel caractères transmis représente ou pas un chiffre divisible par 2.
Résultat attendu
Traitement effectué
Analyser une chaîne de caractères afin de détecter la présence du premier chiffre pair et afficher sa position dans l’étiquette faisant office de barre détat.
Eléments utiles
Elément | Type | Membre | Description |
string | P | Length | Obtient le nombre de caractères dans cette instance. |
char | M | IsDigit | Indique si un caractère Unicode est classé dans la catégorie des chiffres décimaux. |
double | M | Parse | Convertit la représentation sous forme de chaîne d'un nombre en nombre en virgule flottante double précision équivalent. |
string | M | Format | Permet la mise en forme de chaînes de caractères. Remplace chaque élément de mise en forme dans un String spécifié par l'équivalent textuel de la valeur d'un objet correspondant. |
Si vous avez du temps
Créer un bouton permettant de localiser le dernier chiffre pair.
Proposer deux bouton radio intituler Pair et Impair permettant à vos boutons de rechercher les chiffres correspondants dans la chaîne.
Objectif
Analyser une chaîne de caractères et gérer des compteurs
Résultat attendu
Démarrage de l'application | Premier Clic |
Avant dernier Clic | Dernier Clic |
Traitement effectué
Analyser une chaîne de caractères afin de détecter la présence de tous les chiffres pairs et afficher leurs positions dans l’étiquette faisant office de barre d'état.
Dans le cas contraire, afficher un message adéquat.
Après avoir localisé le premier chiffre pair, le bouton de commande change d'intitulé pour indiquer que sont action a changé (la recherche s'effectue à partir de la position courante).
Une fois que tous les chiffres pairs ont été localisés le bouton reprend son libellé initial.
Objectif
Créer une classe proposant une méthode intitulée NomPropre.
Résultat attendu
Après avoir cliqué sur le bouton 'Nom Propre'
Traitement effectué
Le fait de cliquer sur le bouton 'Nom Propre' a pour effet d'invoquer une méthode NomPropre d'une classe que vous aurez créée dans ce but.
Vous transmettez à la méthode le contenu de votre zone de texte, et vous affectez le résultat de votre méthode au contenu de votre zone de texte.
Eléments utiles
Elément | Type | Membre | Description |
string | M | Substring | Extrait une sous-chaîne de l'instance spécifiée. |
char | M | ToUpper | Retourne une copie de String en majuscules. |
Si vous avez du temps
Améliorer votre méthode afin qu’elle transforme la première lettre de chaque mot en majuscule.
5. Fichiers Texte
Objectif
Créer une application permettant à l'utilisateur de saisir un texte qu'il sera en mesure d'enregistrer puis d'ouvrir lors d'une prochaine utilisation.
Résultat attendu
Traitement effectué
Utiliser un contrôle de type TextBox pour la saisie. Le bouton Enregistrer sauvegarde le texte dans un fichier intitulé 'texte.txt'. Le bouton 'Effacer' remet la zone de texte à blanc. Le bouton 'Ouvrir' permet à l'utilisateur de recharger le fichier 'texte.txt' dans la zone de texte.
Faites en sorte que la zone de texte se dimensionne en même temps que la fenêtre. Quand aux boutons de commandes, il devront toujours se situer en bas à droite du formulaire.
Eléments utiles
Elément | Type | Membre | Description |
System.IO | C | StreamWriter | Implémente TextWriter pour écrire les caractères dans un flux selon un codage particulier. Permet entre autre d'écrire dans un fichier texte. |
StreamWriter | M | Write | Écrit dans le flux. Dans notre cas, permet d'effectuer la sauvegarde du fichier. |
StreamWriter | M | Close | Ferme le StreamWriter en cours et le flux sous-jacent. |
System.IO | C | StreamReader | Implémente TextReader qui lit les caractères à partir d'un flux d'octets dans un codage particulier. Permet entre autre de lire un fichier texte. |
StreamReader | M | ReadToEnd | Lit le flux entre la position actuelle et la fin du flux. |
StreamReader | M | Close | Ferme StreamReader et le flux sous-jacent et libère les ressources du système associées au lecteur. |
Si vous avez du temps
Réalisez le même atelier en utilisant un contrôle RichTextBox à la place du contrôle TextBox. Le contrôle RichTextBox est au WordPad de Windows ce que le TextBox est au Bloc-Notes.
Eléments utiles
Elément | Type | Membre | Description |
RichTextBox | M | LoadFile | Charge le contenu d'un fichier dans le contrôle RichTextBox. |
RichTextBox | M | SaveFile | Enregistre le contenu du contrôle RichTextBox dans un fichier. |
Objectif
Créer une application permettant à l'utilisateur de saisir un texte qu'il sera sauvegardé automatiquement à la fermeture du formulaire.
Résultat attendu
Traitement effectué
Cette application est très proche des deux ateliers précédents, si ce n'est que le fichier texte est chargé automatiquement en même temps de l'application. La sauvegarde s'effectue lors de la fermeture du programme.
Notez que la barre de titre de la fenêtre est de type 'Barre d'outils' ou 'Palette Windows'.
Eléments utiles
Elément | Type | Membre | Description |
Form | P | FormBorderStyle | Obtient ou définit le style de bordure du formulaire. |
Form | E | Load | Se produit avant le premier affichage d'un formulaire. |
Form | E | Closing | Se produit pendant la fermeture du formulaire. |
Objectif
Savoir utiliser un fichier séquentiel en lecture / écriture. Utiliser les instructions de recherche dans une chaîne de caractères.
Résultat attendu
Votre application sera validée sur un résultat strictement identique à celui présenté ci-dessus.
Traitement effectué
Analyser et traiter un gros fichier texte (ascii) afin de l’exploiter dans vos applications futures. Ce fichier, un document d’une cinquantaine de pages, contient un QCM contenant plus de 500 questions/réponses. Votre travail consiste à parcourir le fichier dont voici un extrait :
- Compter et afficher le nombre de questions trouvées, les afficher dans une ListBox et les écrire dans le fichier texte en sortie.
- Compter et afficher le nombre total de lignes dans le fichier source (y compris les lignes blanches éventuelles).
- Compter et afficher le nombre réel de lignes valides.
- Compter et afficher le nombre total de caractères dans le fichier source (y compris les espaces).
- Compter et afficher le nombre réel de caractères valides (espaces exclus).
- Afficher à la demande, le fichier texte résultat dans le bloc note,
Le fichier produit en sortie doit correspondre à l'exemple suivant:
Notez que l'on commence par écrire la date de création en entête du fichier.
Eléments utiles
Elément | Type | Membre | Description | ||
System.IO | C | StreamWriter | Implémente TextWriter pour écrire les caractères dans un flux selon un codage particulier. Permet entre autre d'écrire dans un fichier texte. | ||
System.IO | C | StreamReader | Implémente TextReader qui lit les caractères à partir d'un flux d'octets dans un codage particulier. Permet entre autre de lire un fichier texte. | ||
StreamWriter | M | WriteLine | Écrit dans le flux de texte une chaîne suivie d'un terminateur de ligne. | ||
StreamReader | M | ReadLine | Lit une ligne de caractères à partir du flux en cours et retourne les données sous forme de chaîne. | ||
DateTime | P | Now | Obtient un DateTime correspondant à la date et à l'heure locales actuelles sur cet ordinateur. | ||
string | P | Length | Obtient le nombre de caractères dans cette instance. | ||
string | M | IndexOf | Retourne la position d'une chaîne de caractères dans une autre. | ||
string | M | Substring | Extrait une sous-chaîne de l'instance spécifiée. | ||
string | M | ToUpper | Retourne une copie de String en majuscules. | ||
StreamWriter | M | Close | Ferme le StreamWriter en cours et le flux sous-jacent. | ||
StreamReader | M | Close | Ferme StreamReader et le flux sous-jacent et libère les ressources du système associées au lecteur. | ||
System.Diagnostics | C | Process | Fournit l'accès à des processus locaux ainsi que distants, et vous permet de démarrer et d'arrêter des processus système locaux. | ||
Process | M | Start | Lance une ressource de processus et l'associe à un composant Process. | ||
Remarque
Prenez le temps d'analyser le fonctionnement d'une telle application qui correspond à une situation susceptible d'être rencontrée en entreprise.
Si vous avez du temps
Dans l'état actuel des choses, en examinant attentivement votre fichier de sortie, vous remarquerez certaines imperfections… dont voici quelques exemples:
Modifiez votre algorithme pour remédier au problème.
6. Enrichissement Interface Graphique
Objectif
Mettre en œuvre les dialogues communes aux applications Windows. (Ouvrir, Enregistrer sous…, Polices de caractères, Couleurs…)
Résultat attendu
Après avoir cliqué sur le bouton 'Enregistrer'
Après avoir cliqué sur le bouton 'Caractères'
Après avoir cliqué sur un bouton 'Couleur…'
Traitement effectué
Fonctionnalité associée aux boutons:
Nouveau | Crée un nouveau document. La zone de saisie est remise à blanc. Attention si le document en cours n'a pas été enregistrer au moment du clic, votre application propose à l'utilisateur de le faire. Selon la réponse de l'utilisateur, et selon les besoins le dialogue 'Enregistrer sous' est utilisé. |
Ouvrir | Affiche le dialogue 'Ouvrir'. Même remarque que précédemment concernant le document courant. |
Enregistrer | Enregistre le document en cours. Si le document en cours a déjà fait l'objet d'enregistrements précédents, la sauvegarde se fait directement sans aucune confirmation. S'il s'agit du premier enregistrement, la boite de dialogue 'Enregistrer sous' s'affiche. |
Caractères | Permet de modifier la police de caractères de la zone de saisie. La boite de dialogue 'Police' est utilisée. A l'ouverture, elle reprend les caractéristiques de la police en cours. |
Couleur Texte | Offre à l'utilisateur la possibilité de modifier la couleur du texte par le biais du dialogue commun 'Couleurs'. A l'ouverture la boite affiche la couleur en cours. |
Couleur Fond | Même chose pour la couleur de fond de la zone de texte. |
Eléments utiles
Elément | Type | Membre | Description |
TextBox | P | Modified | Obtient ou définit une valeur qui indique que le contrôle zone de texte a été modifié par l'utilisateur depuis la création du contrôle ou la précédente définition du contenu du contrôle. |
MessageBox | M | Show | Affiche une boite de message, avec ou sans icône, avec un ou plusieurs boutons, avec ou sans titre personnalisé. |
Windows.Forms | C | SaveFileDialog | Représente une boîte de dialogue commune qui permet à l'utilisateur de spécifier les options d'enregistrement d'un fichier. |
Windows.Forms | C | OpenFileDialog | Représente une boîte de dialogue commune pour afficher le contrôle qui permet à l'utilisateur d'ouvrir un fichier. |
Windows.Forms | C | FontDialog | Représente une boîte de dialogue commune affichant la liste des polices actuellement installées sur le système. |
Windows.Forms | C | ColorDialog | Représente une boîte de dialogue commune affichant les couleurs disponibles, ainsi que les contrôles permettant à l'utilisateur de définir des couleurs personnalisées. |
CommonDialog | M | ShowDialog | Affiche le dialogue concerné |
FileDialog | P | FileName | Obtient ou définit une chaîne comportant le nom de fichier sélectionné dans la boîte de dialogue Fichier. (Enregistrer sous ou Ouvrir) |
FileDialog | P | Filter | Obtient ou définit la chaîne de filtrage des noms de fichier en cours, qui détermine les choix disponibles dans les zones « Enregistrer sous » ou « Types de fichiers » de la boîte de dialogue. |
FontDialog | P | Font | Obtient ou définit la police sélectionnée. |
ColorDialog | P | Color | Obtient ou définit la couleur sélectionnée par l'utilisateur. |
Si vous avez du temps
Mettez en œuvre la gestion de erreurs afin de prévenir tout problème d'ouverture ou d'enregistrement de fichier.
Objectif
Améliorer l'interface graphique de l'atelier précédent en utilisant des éléments normalisés. Les boutons seront remplacés par des menus déroulants de type MenuStrip, ainsi que par une barre d'outils de type ToolStrip. Utiliser pour la barre d'état un contrôle StatusStrip offrant plus de possibilités qu'un simple Label.
Et si vous êtes curieux, ne manquez pas de découvrir les vertus du ToolStripContainer
Résultat attendu
Traitement effectué
Cet atelier comporte les mêmes traitements que ce du précédent. Seule l'interface est améliorée. Le menu Fichier comporte les options suivantes: Nouveau, Ouvrir, Enregistrer, Quitter.
Les différents boutons reproduisent toutes les fonctionnalités des menus.
Notez l'utilisation d'une barre d'état permettant d'afficher non seulement un message mais également des informations système telles que la date et l'heure.
Selon les actions effectuées, la barre d'état affichera des messages appropriés (Enregistrement effectué, Ouverture du fichier…)
Les boutons seront dotés d'info-bulles expliquant leur fonction.
Objectif
Il s'agit de mettre en œuvre des menus déroulants par programme.
Résultat attendu
Traitement effectué
Au lancement de l'application, votre formulaire principal est doté de deux menus. Le menu 'Fichier' comporte la seule option 'Quitter'. Le menu 'Prénoms' est vide.
Une barre d'outils dotée de 3 boutons propose les fonctionnalités suivantes:
'Prénoms' est un bouton bascule permettant de charge et décharger une liste de prénoms dans le menu du même nom.
Une fois le menu chargé, la sélection d'un prénom provoque son affichage dans le formulaire et sont repérage (Checked) dans le menu.
Un deuxième click sur le bouton 'Prénom' supprime les éléments du menu 'Prénoms'.
'Polices' est un bouton bascule faisant apparaître un troisième menu contenant la liste des polices de caractères installées sur le système. Le choix d'une police dans le menu provoque sont repérage (Checked) et son application au texte du prénom affiché.
Lorsque le menu Police est affiché, le bouton correspondant permet de le détruire.
'Quitter' est un simple bouton poussoir permettant de quitter l'application.
Eléments utiles
Elément | | Membre | Description |
Form | P | MainMenuStrip | Représente la structure de menus d'un formulaire. Cette propriété est de type MenuStrip. |
Forms | C | MenuStrip | Fournit un système de menus d'un formulaire. (Peut être assimilé à une barre de menus). |
Form | C | ToolStripMenuItem | Représente un élément individuel affiché dans un MainMenuStrip ou dans un ContextMenuStrip. ToolStripMenuItem est une classe dérivée de ToolStripItem |
MainMenuStrip, ContextMenuStrip | M | DropDownItems | Obtient une valeur qui indique la collection d'objets associée au menu. |
ToolStripMenuItem | P | Text | Obtient ou définit une valeur qui indique la légende de l'élément de menu. |
ToolStripMenuItem | P | Checked | Obtient ou définit une valeur qui indique si une coche apparaît en regard du texte de l'élément de menu. |
ToolStripMenuItem | E | Click | Se produit suite à un clic sur l'élément de menu ou à la sélection de cet élément à l'aide d'une touche de raccourci ou d'une touche d'accès rapide. |
DropDownItems | M | Add | Ajoute un nouvel élément à la collection. |
DropDownItems | M | Clear | Supprime tous les objets de la collection d'éléments de menu. |
Drawing | C | FontFamily | Définit un groupe de polices dont le design de base est similaire, mais qui comportent des variations de styles. Exemple : 'Arial' |
FontFamily | P | Families | Retourne un tableau contenant tous les objets FontFamily associés au contexte graphique en cours. |
FontFamily | P | Name | Obtient le nom de cet objet FontFamily. |
Forms | C | ToolStrip | Fournit un conteneur pour les objets barre d'outils Windows. |
ToolStripButton, ToolStripMenuItem | P | CheckOnClick | Obtient ou définit une valeur indiquant si l’élément doit automatiquement apparaître activé et désactivé lorsque l'utilisateur clique dessus. |
ToolStripButton, ToolStripMenuItem | P | Checked | Obtient ou définit une valeur indiquant si l’élément est coché. |
6.4. Menus Contextuels
Objectif
A partir de l'atelier précédent, mettre en œuvre un menu contextuel ou PopUp.
Résultat attendu
Traitement effectué
Il est désormais possible d'afficher un menu contextuel par clic droit sur le prénom affiché. Ce menu offre deux sous menus, 'Polices' et 'Couleurs'.
Le sous-menu 'Couleurs' est statique dans la mesure où les noms de couleurs sont renseignés lors de la conception de l'application. En choisissant une couleur, celle-ci s'applique au prénom affiché.
Le sous-menu 'Polices' est dynamique. Celui-ci est alimenté et vidé par le bouton bascule 'Polices'. La police sélectionnée s'applique au prénom affiché.
Eléments utiles
Elément | Type | Membre | Description |
Forms | C | ContextMenuStrip | Représente un menu contextuel. |
ContextMenuStrip | P | DropDownItems | Obtient une valeur qui indique la collection d'objets associée au menu. |
DropDownItems | M | Add | Ajoute un novel élément de menu à la collection. |
DropDownItems | M | Clear | Supprime tous les objets de la collection d'éléments de menu. |
Objectif
Savoir mettre en oeuvre des barres de défilements (ascenseurs) et afficher des couleurs variables.
Résultat attendu
Traitement effectué
Effectuer le mélange des couleurs à partir des trois fondamentales Rouge, Vert et Bleu.
La couleur résultant du mélange des trois est affichée à l'aide d'une quatrième étiquette au bas de la feuille.
En agissant sur chaque barre de défilement on fait varier la couleur correspondante et la couleur résultante.
Avec un peu de réflexion quelques lignes de code suffisent. L'exemple ci-dessus en compte 4. Bonne réflexion.
Eléments utiles
Elément | Type | Membre | Description |
ScrollBar | P | Value | Obtient ou définit une valeur numérique qui représente la position actuelle de la zone de défilement sur le contrôle barre de défilement. |
ScrollBar | E | Scroll | Se produit lorsque la case de défilement a été déplacée par une action de la souris ou du clavier. |
Color | M | FromArgb | Crée une structure Color à partir des valeurs des quatre composants ARVB 8 bits (alpha, rouge, vert et bleu). |
Si vous avez du temps
Il serait intéressant d'afficher sous forme numérique la valeur de chaque couleur, en décimal et pourquoi pas en Hexadécimal?
Il est également possible de faire varier une barre de défilement lui assignant une valeur numérique.
Donner la possibilité à l'utilisateur de taper chaque couleur sous forme de chiffre dans une zone de texte et d'ajuster les éléments de la fenêtre en fonction des valeurs saisies.
Objectif
Adapter l’atelier précédent en utilisant des contrôle de type TrackBar et NumericUpDown.
Résultat attendu
Traitement effectué
En jouant sur les curseurs les différentes couleurs s'ajustent automatiquement ainsi que les valeurs numériques correspondantes.
La modification d'une valeur numérique provoque le même effet sur las différents éléments.
Eléments utiles
Elément | Type | Membre | Description |
TrackBar | P | Orientation | Obtient ou définit une valeur indiquant l'orientation horizontale ou verticale de la barre de suivi. |
TrackBar et NumericUpDown | P | Minimum | Obtient ou définit la limite inférieure de la plage avec laquelle cette TrackBar fonctionne. |
TrackBar et NumericUpDown | P | Maximum | Obtient ou définit la limite supérieure de la plage avec laquelle cette TrackBar fonctionne. |
TrackBar et NumericUpDown | P | Value | Obtient ou définit une valeur numérique qui représente la position actuelle du curseur sur la barre de suivi. |
TrackBar | E | Scroll | Se produit lorsqu'une action de la souris ou du clavier déplace le curseur. |
NumericUpDown | E | ValueChanged | Se produit lorsque la propriété Value a été modifiée. |
6.7. ListView et ImageList
Objectif
Mettre en œuvre et peupler un contrôle ListView, puis gérer les différents modes d’affichages proposés par le contrôle.
Résultat attendu
Traitement effectué
Le constructeur du formulaire se chargera d’alimenter de contrôle ListView avec des données. (Les icônes vous sont fournies par votre formateur)
Les différents boutons permettront de changer le mode d’affichage de la liste (Grandes icônes, petites icônes, Liste et Détail).
Vous remarquerez que le bouton correspondant à l’affichage en cours est désactivé. La ligne de l’élément en cours est entièrement sélectionnée.
Eléments utiles
Elément | Type | Membre | Description |
ListView | P | Columns | Collection contenant tous les en-têtes de colonne (de type ColumnHeader) qui apparaissent dans le contrôle. |
ListView | P | Items | Collection qui contient tous les éléments (de type ListViewItem) du contrôle. |
Items | M | Add | Ajoute un élément à la collection. |
ListViewItem | P | SubItems | Obtient une collection contenant tous les sous-éléments de l'élément. |
ListViewItem | P | ImageIndex | Obtient ou définit l'index de l'image qui s'affiche pour l'élément. |
SubItems | M | Add | Ajoute un sous-élément à la collection. |
ListView | P | LargeImageList | Obtient ou définit le ImageList à utiliser lors de l'affichage des éléments sous forme de grandes icônes dans le contrôle. |
ListView | P | SmallImageList | Obtient ou définit l'objet ImageList à utiliser lors de l'affichage des éléments sous forme de petites icônes dans le contrôle. |
ListView | P | View | Obtient ou définit la façon d'afficher les éléments dans le contrôle. |
ListView | P | FullRowSelect | Obtient ou définit une valeur qui indique si le fait de cliquer sur un élément sélectionne aussi tous ses sous-éléments. |
ImageList | P | Images | Collection des images (de type ImageCollection) stockées dans cette liste d'images. |
ImageList | P | ImageSize | Obtient ou définit la taille des images dans la liste d'images. |
Si vous avez du temps
Faites en sorte que les quatre boutons utilisent le même gestionnaire d’évènement. La propriété Tag peut être utilisée pour mémoriser la vue (View) qui sera appliquée par chacun des boutons.
Le fait de double-cliquer sur un élément affiche le dialogue suivant.
Exemple : Double-Clic sur Dupont
Si vous avez vraiment du temps
Pourquoi ne pas prévoir la modification des informations « Qualité » et « Caractère » ?
6.8. TreeView - Médiathèque
Objectif
Découvrir les fonctionnalités et les subtilités du contrôle TreeView. Une instance de ce type est constituée d’une collection Nodes d’objets de type TreeNode. Chaque objet TreeNode possède lui-même une collection Nodes de ses nœuds enfants, et ainsi de suite. Pour ajouter un nœud il suffit d’invoquer la méthode Add de la collection Nodes à laquelle vous voulez rattacher ce nouvel élément. Pour supprimer un noeud, appliquez-lui la méthode Remove.
L’IDE Visual Studio.NET vous procure un assistant permettant de peupler votre TreeView en mode Design. Cet assistant est accessible à partir de la palette des propriétés.
Résultat attendu
Traitement effectué
Créer un formulaire doté d’un contrôle TreeView, d’une StatusBar et de 3 contrôles de type Button. Au démarrage de l’application votre TreeView contiendra les données présentées ci-dessus. Quatre dossiers (Livre, CD, DVD et Vidéo) représenteront les types de médias de votre Médiathèque. Chaque dossier contiendra quelques éléments. Vous noterez que chaque type de média est doté d’un icône adaptée.
Le bouton « Développer » permettra comme son nom l’indique de développer l’ensemble de l’arborescence, alors que le bouton « Réduire » fera le contraire.
La barre d’état sera dotée de deux volets (Panels). Le premier volet affichera le type de média sélectionné. Le deuxième affichera le nombre d’éléments dans la catégorie sélectionnée ou le nom du média selon le cas :
Il va sans dire que vos contrôle devront se déplacer / redimensionner lors du redimensionnent de la fenêtre.
Le dernier bouton est le plus intéressant.
- Lorsqu’un type de média sera sélectionné (Dossier), le bouton s’intitulera « Ajouter » et permettra d’ajouter un média dans la catégorie en question.
- Lorsqu’un média sera sélectionné, le bouton s’intitulera « Supprimer » et permettra de supprimer ce média après confirmation de l’utilisateur.
Ajout d’un nouveau média
Suppression d’un média
Eléments utiles
Elément | Type | Membre | Description |
TreeView | P | HideSelection | Obtient ou définit une valeur indiquant si le nœud d'arbre sélectionné reste affiché en surbrillance même quand l'arborescence a perdu le focus. |
TreeView | P | ImageList | Obtient ou définit l’ImageList qui contient les objets Image utilisés par les nœuds d'arbre. |
TreeView | P | Nodes | Obtient la collection des nœuds d'arbre assignés au contrôle TreeView. |
Nodes | P | Count | Nombre d’éléments de la collection. |
TreeView | P | ImageIndex | Obtient ou définit la valeur d'index de liste de l'image par défaut qui est affichée par les nœuds d'arbre. |
TreeView | P | SelectedImageIndex | Obtient ou définit la valeur d'index de liste de l'image affichée lorsqu'un nœud d'arbre est sélectionné. |
Nodes | M | Add | Ajoute un nouveau nœud d'arbre à la collection. |
Nodes | M | Remove | Supprime le nœud d'arbre spécifié de la collection de nœuds d'arbre. |
TreeView | P | SelectedNode | Obtient ou définit le nœud d'arbre qui est actuellement sélectionné dans le contrôle TreeView. |
TreeNode | P | Text | Obtient ou définit le texte affiché dans l'étiquette du nœud d'arbre. |
TreeNode | P | Parent | Obtient le nœud d'arbre parent du nœud d'arbre en cours. |
TreeNode | P | ImageIndex | Obtient ou définit la valeur d'index de liste de l'image affichée quand le nœud d'arbre est dans l'état non sélectionné. |
TreeNode | P | SelectedImageIndex | Obtient ou définit la valeur d'index de liste de l'image affichée quand le nœud d'arbre est dans l'état sélectionné. |
TreeNode | M | Expand | Développe le nœud d'arbre. |
TreeNode | M | Collapse | Réduit le nœud d'arbre. |
TreeView | M | CollapseAll | Réduit tous les nœuds d'arbre. |
TreeView | M | ExpandAll | Développe tous les nœuds d'arbre. |
TreeView | E | AfterSelect | Se produit après la sélection du nœud d'arbre. |
Si vous avez du temps
- Ajouter la possibilité de renommer un média.
- Mettez en ouvres des menus contextuels proposant les options appropriées selon le nœud sélectionné.
- Permettez à l’utilisateur de supprimer un média au clavier à l’aide de la touche {Suppr}, renommer un média à l’aide de la touche {F2}…
6.9. Glisser – Déplacer (Drag & Drop)
Objectif
Découvrir les base du glisser déplacer.
Résultat attendu
Traitement effectué
L’utilisateur de votre application pourra faire glisser le contenu de la première zone de texte vers la seconde ou vers la corbeille.
- Zone de texte1 vers zone de texte2 : le texte sera déplacé de la première zone vers la seconde.
- Zone de texte1 vers zone de texte2, touche {Ctrl} maintenue : le texte sera copié de la première zone vers la seconde.
- Zone de texte1 vers la corbeille : le texte sera effacé de la première zone. La corbeille changera d’aspect pour indiquer qu’elle contient le texte venant d’y être déposé.
Un clic droit sur la corbeille proposera un menu contextuel proposant de restaurer son contenu (vers la zone de texte 1). Si la corbeille est vide, l’option restaurer devra être désactivée.
Avant restauration
Après restauration
Eléments utiles
Elément | Type | Membre | Description |
Control | P | AllowDrop | Obtient ou définit une valeur indiquant si le contrôle peut accepter des données que l'utilisateur y fait glisser. |
Control | E | MouseDown | Se produit lorsque le pointeur de la souris se trouve sur le contrôle et qu'un bouton de la souris est enfoncé. |
MouseEventArgs | P | Button | Obtient le bouton de la souris sur lequel l'utilisateur a appuyé. |
MouseButtons | P | Left | Le bouton gauche de la souris a été enfoncé. |
Control | M | DoDragDrop | Démarre une opération glisser-déplacer. |
DragDropEffects | P | Copy | Les données sont copiées dans la cible de déplacement. |
DragDropEffects | P | Move | Les données issues de la source de glissement sont déplacées vers la cible de déplacement. |
Control | E | DragEnter | Se produit lorsqu'un objet est déplacé dans les limites d'un contrôle. |
Control | E | DragDrop | Se produit lors d'une opération de glisser-déplacer. |
DragEventArgs | P | Data | Obtient les données associées à cet événement. |
Data | M | GetData | Extrait les données associées au format de données spécifié. |
Si vous avez du temps
Faites en sorte que le glisser déplacer puisse fonctionner à partir de la deuxième zone de texte. L’option « Restaurer » de la corbeille devra rétablir son contenu dans la zone de texte appropriée.
6.10. Drag & Drop Images
Objectif
Mise en œuvre du glisser déplacer pour des ressources de type graphique.
Résultat attendu
Traitement effectué
Des pictogrammes de type PictureBox sont regroupés dans un Panel. Votre application permet de faire glisser un pictogramme dans la zone de droite afin de le dessiner.
Le bouton « Effacer » permet la remise à blanc de la surface de dessin.
Les types de contrôle mis en œuvre sont de type Panel et PictureBox.
Les éléments à utiliser sont sensiblement les mêmes que pour le tp précédent. La liste suivante ne mentionne que les éléments spécifiques à cet exercice.
Eléments utiles
Elément | Type | Membre | Description |
PictureBox | P | Image | Obtient ou définit l'image que PictureBox affiche. |
Control | M | CreateGraphics | Crée l'objet Graphics permettant de dessiner sur le contrôle concerné. |
Data | M | GetData | Extrait les données associées au format de données spécifié. |
DataFormats | P | Bitmap | Spécifie un format de bitmap Windows. Ce champ static est en lecture seule. |
Control | M | PointToClient | Calcule l'emplacement du point spécifié à l'écran en coordonnées client. |
Graphics | M | DrawImage | Dessine l'objet Image spécifié à l'emplacement indiqué avec sa taille d'origine. |
System.Drawing | T | Image | Classe de base abstraite qui fournit des fonctionnalités pour les classes descendantes Bitmap et Metafile. |
Graphics | M | Clear | Efface l'intégralité de la surface de dessin et la remplit avec la couleur d'arrière-plan spécifiée. |
Si vous avez du temps
Ajouter quelques outils. Possibilité de dessiner des lignes, rectangles, ellipses…
6.11. Timer et ProgressBar
Objectif
Appréhender les fonctionnalités du contrôle Timer et matérialiser l’écoulement du temps à l’aide d’un contrôle de type ProgressBar.
Résultat attendu
Traitement effectué
Le bouton « Go » permet de démarrer la cuisson. Il change alors de désignation et permet maintenant l’interruption de la cuisson. Une fois la cuisson démarrée le Label et le ProgressBar indiquent à leur manière le nombre de secondes écoulées.
En cas d’utilisation du bouton « Stop » la fenêtre se présente comme suit :
Eléments utiles
Elément | Type | Membre | Description |
ProgressBar | P | Maximum | Obtient ou définit la valeur maximale de la plage du contrôle. |
ProgressBar | P | Minimum | Obtient ou définit la valeur minimale du contrôle d'entrée associé. |
ProgressBar | P | Step | Obtient ou définit la quantité d'augmentation de la position actuelle de la barre de progression lors d'un appel à la méthode PerformStep. |
ProgressBar | P | Value | Obtient ou définit la position actuelle de la barre de progression. |
ProgressBar | M | Increment | Fait avancer la position actuelle de la barre de progression de la quantité spécifiée. |
ProgressBar | M | PerformStep | Fait avancer la position actuelle de la barre de progression de la quantité de la propriété Step. |
Timer | P | Interval | Obtient ou définit l'heure, en millièmes de seconde, entre les graduations de la minuterie. |
Timer | P | Enabled | Obtient ou définit si la minuterie est en cours d'exécution. |
Timer | M | Start | Démarre la minuterie. |
Timer | M | Stop | Arrête la minuterie. |
System | C | DateTime | Représente un instant, généralement exprimé sous la forme d'une date ou d'une heure. |
System | C | TimeSpan | Représente un intervalle de temps. |
Si vous avez du temps
Avant de démarrer la cuisson, donnez la possibilité à l’utilisateur de déterminer sa durée.
6.12. TreeView, ListView et Splitter
Objectif
Créer une application de type explorateur de fichier permettant d’explorer un dossier spécifique de votre répertoire de travail.
Résultat attendu
Traitement effectué
La liste de gauche est constituée d’un contrôle TreeView affichant votre arborescence de dossiers. La liste de droite est matérialisée par un contrôle de type ListView et affiche les fichiers du dossier sélectionné. Les deux listes sont délimitées par un contrôle de type Splitter. Ce dernier permet à l’utilisateur de répartir l’espace du formulaire réservés aux deux listes.
Afin de réaliser ce tp et de mieux appréhender la gestion du système de fichiers, nous vous conseillons vivement d’investiguez les classes suivantes : Environment, Path, Directory, File, DirectoryInfo et FileInfo.
Eléments utiles
Elément | Type | Membre | Description |
Environment | M | GetFolderPath | Obtient le chemin d'accès au dossier spécial du système identifié par l'énumération spécifiée. |
Environment | E | SpecialFolder | Spécifie les constantes énumérées utilisées pour extraire les chemins d'accès des dossiers spéciaux du système. |
SpecialFolder | P | Personal | Répertoire servant de référentiel commun pour les documents. |
System.IO | C | Directory | Expose des méthodes static pour créer, déplacer et énumérer via des répertoires et sous-répertoires. |
System.IO | C | File | Fournit des méthodes static pour créer, copier, supprimer, déplacer et ouvrir des fichiers et facilite la création d'objets FileStream. |
System.IO | C | Path | Exécute des opérations sur des instances String qui contiennent des informations relatives au chemin d'accès d'un fichier ou d'un répertoire. |
Directory | M | GetDirectories | Obtient les noms des sous-répertoires dans le répertoire spécifié. |
Directory | M | GetFiles | Retourne les noms des fichiers dans le répertoire spécifié. |
Path | M | GetFileName | Retourne le nom et l'extension de fichier de la chaîne de chemin d'accès spécifiée. |
Si vous avez du temps
Ajoutez une barre d’état à votre projet permettant d’afficher des information relatives au fichier sélectionné.
6.13. RichTextBox et compagnie
Objectif
Découverte des contrôles suivants ; TabControl, DomainUpDown, RichTextBox et NotifyIcon.
Résultat attendu
Traitement effectué
Le contrôle intitulé « Civilité » proposera les 3 valeurs : Monsieur, Madame et Mademoiselle. Le reste de la page « Détail » est une fiche de saisie des plus classiques.
La barre d’état affiche en dynamique les informations concernant le contact ainsi que la date système.
La page Commentaires est constituée d’un contrôle de type RichTextBox doté d’un menu contextuel.
Lors de sa réduction, la fenêtre ne sera plus apparente dans la barre des tâches (sous forme de bouton), mais ne sera accessible que par le biais d’une icône dans la zone de notification en bas à droite de l’écran.
« Style » donnera accès aux trois options « Gras », « Italique », « Souligné » et « Normal », alors que « Couleur » proposera « Rouge », « Vert », « Bleu » et « Noir ». Ces différentes options permettront d’appliquer la mise en forme correspondante au texte sélectionné.
Eléments utiles
Elément | Type | Membre | Description |
Form | P | ShowInTaskbar | Obtient ou définit une valeur indiquant si le formulaire est affiché dans la barre des tâches Windows. |
Form | P | WindowState | Obtient ou définit l'état de la fenêtre du formulaire. |
FormWindowState | P | Minimized | Fenêtre réduite. |
RichTextBox | P | SelectionFont | Obtient ou définit la police du texte de la sélection actuelle ou du point d'insertion. |
RichTextBox | P | SelectionColor | Obtient ou définit la couleur du texte de la sélection actuelle ou du point d'insertion. |
RichTextBox | M | SaveFile | Enregistre le contenu du contrôle RichTextBox dans un fichier. |
RichTextBox | M | LoadFile | Charge le contenu d'un fichier dans le contrôle RichTextBox. |
Si vous avez du temps
Faites en sorte de sauvegarder les données sur disque à la fermeture de l’application et de les recharger à l’ouverture.
fuck you ou sont les solutions ><!
RépondreSupprimer