Seance 4 Sujet

6
Nous sommes en mode graphique maintenant. 1. Prix HT Prix TTC On vous demande de créer une application graphique dont l’objectif est de convertir en prix TTC un prix HT saisi par l’utilisateur. Pour créer une solution en mode graphique avec C#, il faut dans SHARPDEVELOP faire « FILE / NEW / SOLUTION… et choisir WINDOW APPLICATION dans la boîte de sélection). Ce tutoriel devrait vous aider http://www.journaldunet.com/developpeur/tutoriel/csharp/061211- visual-csharp-express-interface/0.shtml (il est défini pour Visual C#, mais la démarche est la même pour nous). Attention, dans le formulaire principal MainForm, vous pouvez switcher du code à l’interface graphique en cliquant alternativement sur les onglets SOURCE et DESIGN. Idem, vous pouvez alterner entre le gestionnaire de votre projet (onglet PROJECTS) et les composants visuels (TOOLS). Construisez l’interface suivante : Faites bien la différence entre la propriété TEXT qui indique ce qui est affiché sur le composant et NAME qui désigne son nom de variable dans le programme (onglet PROPERTIES). Sélectionnez le bouton CALCULER, allez dans la liste des événements. Actionnez l’évènement CLICK. Vous programmerez la conversion HT vers TTC dans ce gestionnaire d’évènement. Attention, si l’utilisateur entre une valeur non valide (non numérique), vous devez gérer l’erreur lors du calcul en envoyant une boîte de dialogue annonçant la non-validité de la saisie. 2. Prix HT TTC avec différents types de produits Complétez votre formulaire de la manière suivante :

description

Seance_4_Sujet c Sharp

Transcript of Seance 4 Sujet

Page 1: Seance 4 Sujet

Nous sommes en mode graphique maintenant.

1. Prix HT Prix TTC

On vous demande de créer une application graphique dont l’objectif est de convertir en prix TTC un

prix HT saisi par l’utilisateur.

Pour créer une solution en mode graphique avec C#, il faut dans SHARPDEVELOP faire « FILE / NEW /

SOLUTION… et choisir WINDOW APPLICATION dans la boîte de sélection).

Ce tutoriel devrait vous aider http://www.journaldunet.com/developpeur/tutoriel/csharp/061211-

visual-csharp-express-interface/0.shtml (il est défini pour Visual C#, mais la démarche est la même

pour nous).

Attention, dans le formulaire principal MainForm, vous pouvez switcher du code à l’interface

graphique en cliquant alternativement sur les onglets SOURCE et DESIGN.

Idem, vous pouvez alterner entre le gestionnaire de votre projet (onglet PROJECTS) et les

composants visuels (TOOLS).

Construisez l’interface suivante :

Faites bien la différence entre la propriété TEXT qui indique ce qui est affiché sur le composant et

NAME qui désigne son nom de variable dans le programme (onglet PROPERTIES).

Sélectionnez le bouton CALCULER, allez dans la liste des événements. Actionnez l’évènement CLICK.

Vous programmerez la conversion HT vers TTC dans ce gestionnaire d’évènement.

Attention, si l’utilisateur entre une valeur non valide (non numérique), vous devez gérer l’erreur lors

du calcul en envoyant une boîte de dialogue annonçant la non-validité de la saisie.

2. Prix HT TTC avec différents types de produits

Complétez votre formulaire de la manière suivante :

Page 2: Seance 4 Sujet

Dans un GROUPBOX, vous mettez 3 RADIOBUTTON. La propriété CHECKED de cette dernière permet

de savoir si elle est cochée ou pas. Modifiez le gestionnaire d’évènements CLICK sur le bouton

CALCULER pour tenir compte des 3 niveaux de TVA (5.5%, 19.6% et 33%).

Branchement d’un gestionnaire d’événement sur une méthode existante. Après avoir modifié le

gestionnaire BUTTON_CLICK, branchez les gestionnaires d’évènements CLICK des RADIOBUTTON

pour qu’ils s’appuient sur la même méthode lorsque l’utilisateur modifie le niveau de TVA (il n’est

donc pas nécessaire de ré-écrire le code, et encore moins de faire des copier/coller).

3. Application statistique

On souhaite réaliser une application statistique qui permet de saisir des valeurs numériques, de les

trier (de manière ascendante ou descendante), de calculer la moyenne, de les sauver/charger dans

deux types de fichiers : fichier texte et fichier XML.

Voici l’interface de la fenêtre principale de l’application.

Page 3: Seance 4 Sujet

Saisies et calculs

Le composant LISTBOX est central, il liste les valeurs saisies par l’utilisateur (la propriété ITEMS

permet de gérer le contenu d’une boîte liste, il s’agit d’une collection d’objets [on peut la voir comme

une collection de String si on y met des chaînes de caractères] -- http://msdn.microsoft.com/en-

us/library/system.windows.forms.listbox.items.aspx).

Fonctionnalités :

Le bouton AJOUTER permet d’introduire une valeur dans la LISTBOX.

Lorsqu’une valeur est sélectionnée dans la boîte liste et que l’utilisateur appuie sur la touche

SUPPR, la valeur doit être supprimée de la liste (SELECTEDINDEX de la LISTBOX permet de

connaître le numéro de l’élément sélectionné, il faudra programmer le gestionnaire

d’évènements KEYDOWN de la LISTBOX cf. les propriétés du paramètre KEYEVENTARGS).

Lorsque l’utilisateur clique sur le bouton MOYENNE, la moyenne des valeurs doit être

affichée dans le label situé juste en dessous (du bouton).

Lorsque l’utilisateur clique sur le bouton TRIER, les valeurs doivent être triées de manière

ascendante ou descendante selon la sélection effectuée dans le GROUPBOX « Trier les

valeurs ». Attention, le trie doit être effectué en considérant que nous avons affaire à une

collection de valeurs numériques et non pas de chaînes de caractères (ex. 12 est plus grand

que 8 en numérique, alors qu’en chaîne de caractère « 12 » est plus petit que « 8 » -- Avec la

classe Array, vous avez de quoi trier des tableaux de numérique -

http://msdn.microsoft.com/fr-fr/library/system.array.aspx ).

Menus

Nous souhaitons ajouter un menu à notre application (cf. le composant MENUSTRIP --

http://www.journaldunet.com/developpeur/tutoriel/csharp/061211-visual-csharp-express-

interface/3.shtml ; ou encore http://msdn.microsoft.com/fr-

fr/library/360kwx3z%28v=vs.90%29.aspx [seule la partie menu nous intéresse]). Voici notre menu :

Page 4: Seance 4 Sujet

FICHIER / NOUVEAU sert à vider la LISTBOX.

FICHIER / QUITTER sert à fermer l’application. Attention, juste avant la fermeture de l’application

vous devez confirmer l’action par l’utilisateur avec une boîte de dialogue ressemblant à celle-ci

Indications : regardez du côté de l’évènement FORMCLOSING du formulaire ; et voyez méthode

SHOW d’un MESSAGEBOX (notamment la gestion des boutons et de la réponse).

Page 5: Seance 4 Sujet

Entrées / Sorties

FICHIER / SAUVER doit faire apparaître une boîte de dialogue de sélection de nom de fichier. Deux

types de fichiers sont autorisés (format *.txt ou format *.xml). L’interface graphique se présenterait

de la manière suivante :

L’utilisateur doit choisir le type de fichier et indiquer son nom. Le contenu de la liste doit être alors

inscrit dans le fichier.

Indications :

Pour faire apparaître et gérer une boîte de dialogue de gestion de noms de fichier pour la

sauvegarde, regardez du côté du composant SAVEFILEDIALOG (cf.

http://msdn.microsoft.com/en-us/library/sfezx97z.aspx -- attention, à la différence cet

exemple, vous placez le composant sur votre formulaire, vous n’avez donc pas à créer l’objet

mais à l’utiliser directement). Vous pouvez spécifier directement les propriétés du

composant via la boîte des propriétés.

La propriété FILTER permet de spécifier les extensions de noms de fichiers.

La propriété FILTERINDEX permet de connaître le numéro de l’extension de fichier (*.txt == 1,

*.xml == 2) sélectionnée par l’utilisateur.

FILENAME indique le nom de fichier.

SHOWDIALOG se charge de faire apparaître la boîte de dialogue. Attention, vous n’effectuez

la sauvegarde effective que si l’utilisateur a cliqué sur le bouton ENREGISTRER (voyez du côté

des valeurs renvoyées par SHOWDIALOG – cf. http://msdn.microsoft.com/fr-

fr/library/c7ykbedk%28v=vs.85%29.aspx).

Pour sauvegarder dans un fichier texte, regardez du côté de la classe StreamWriter

(http://msdn.microsoft.com/fr-fr/library/system.io.streamwriter.aspx).

Pour sauvegarder dans un fichier XML, regardez du côté de la sérialisation (http://www.ace-

art.fr/wordpress/2010/04/27/tutorial-sur-la-serialisation-en-c/ ;

http://www.devparadise.com/technoweb/code/dotnet/a50028.php montre qu’il est

possible de nommer explicitement les champs dans la structure XML).

Page 6: Seance 4 Sujet

FICHIER / OUVRIR permet de charger le contenu d’un fichier dans la LISTBOX. Une boîte de dialogue

(OPENFILEDIALOG) permet à l’utilisateur de sélectionner le fichier, au format TXT ou XML.

Les valeurs contenues dans le fichier doivent être affichées dans la LISTBOX.

Indications :

Pour gérer un OPENFILEDIALOG, voir http://msdn.microsoft.com/fr-fr/library/61097ykx.aspx.

La gestion de SHOWDIALOG, FILTER, FILTERINDEX et FILENAME est analogue à celle de

SAVEFILEDIALOG.

Pour lire un fichier texte, utilisez la classe STREAMREADER (http://msdn.microsoft.com/fr-

fr/library/system.io.streamreader%28v=VS.80%29.aspx).

Pour lire un fichier XML, passez par la sérialisation (http://www.ace-

art.fr/wordpress/2010/04/27/tutorial-sur-la-serialisation-en-c/).

4. Barre d’outils

S’il vous reste encore un peu de temps, vous pourriez ajouter une barre d’outils dans votre

application. Cf. le composant TOOLSTRIP -- http://www.xna-

connection.com/public/articles/133/gerard-leblanc-csharp-et-framework-net-version-2-barre-de-

menu-d-etats-et-boutons.pdf

FIN.