samedi 30 octobre 2010

vb.net


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 :


  1. Compter et afficher le nombre de questions trouvées, les afficher dans une ListBox et les écrire dans le fichier texte en sortie.
  2. Compter et afficher le nombre total de lignes dans le fichier source (y compris les lignes blanches éventuelles).
  3. Compter et afficher le nombre réel de lignes valides.
  4. Compter et afficher le nombre total de caractères dans le fichier source (y compris les espaces).
  5. Compter et afficher le nombre réel de caractères valides (espaces exclus).
  6. 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.

1 commentaire: