Vous êtes sur la page 1sur 97

Crer des logiciels facilement avec Visual

studio
Julien FAUJANET
Copyright 2016 Julien FAUJANET
All rights reserved.
ISBN : 1537224263
ISBN-13 : 978-1537224268

Table des matires


Partie I : Les bases
1. Les bases en C#
Les Variables :
Les structures conditionnelles :
Le Switch :
Les Fonctions :
2. Dmarrage et interface
Crer un projet :
3. premiers composants
Le Label :
Le Button (bouton) :
Le TextBox :
ColorDialog (Bote de dialogue de choix de couleurs) :
OpenFileDialog (bote de dialogue : ouvrir un fichier) :
PictureBox :
Clipboard :
MessageBox :
ComboBox :
4. Les proprits
Les proprits avant lancement :
Les proprits en temps rel :
5. Les vnements
Lencart des vnements :
6. Composant personnalis
Un Login personnalis :
Partie II : Projet
7. Notre premier logiciel
Dmarrons :
Le Code :
Essai :
8. Bibliographie

Introduction :

Dans ce livre nous allons apprendre crer des logiciels avec Visual Studio. Visual Studio
est un logiciel qui appartient Microsoft et qui permet de crer des logiciels et applications
de manire intuitive en dplaant les lments graphiques avec la souris pour les
positionner ou bon vous semble.

Bien sur il y a aussi une partie programmation, pour toute la logique du projet que vous allez
crer. Le langage utilis dans ce livre sera le langage C# (prononc : Si charpe ).

Connatre les bases de ce langage est un plus, mais pas obligatoire.


Quoi quil en soit, pour les non initis, je vous ai prpar un petit chapitre qui vous donnera
les connaissances ncessaires dans ce langage pour pouvoir suivre ce livre.

Quallons nous voir dans ce livre ?

La premire partie est rserve aux bases avec, comme mentionn au dessus : un chapitre
sur le langage C#.

Puis, nous allons parcourir linterface du logiciel Visual Studio et je vous dtaillerai les
menus et fentres les plus importantes.

Ensuite nous verrons les premiers composants graphiques que nous utiliserons dans nos
futurs logiciels. Aprs cela nous verrons les proprits de ces composants.
Les vnements, chapitre trs important pour pouvoir grer les interactions avec lutilisateur
seront bien sur de la partie.

Nous verrons aussi comment crer nos propres composants, pour aller bien plus loin que
ce qui est initialement prvu.

Puis dans la deuxime partie , fini de rigoler, nous allons crer un logiciel avec toutes les
connaissances que nous aurons acquises dans ce livre.

Nous pouvons prsent commencer. Je vous souhaite une bonne lecture.


Partie I : Les bases

1. Les bases en C#
2. Dmarrage et
interface
3. Premiers
composants
4. Les proprits
5. Les vnements
6. Composant
personnalis
1. Les bases en C#

Dans ce chapitre nous allons tudier les bases du langage C#. Les exemples prit
dans ce chapitre sont tirs dun prcdent livre intitul : Manuel indispensable
pour Unity . Donc les exemples seront sur un projet de cration de jeu vido car
jai repris la mme explication mais a ne doit pas vous perturber. Le principe est le
mme.
Les Variables :
Elles sont indispensables au fonctionnement dun programme. Une variable est en quelques
sortes une bote qui va vous permettre de garder des valeurs en mmoire pour tre
rutilise au cours du programme. Par exemple :
nom, total, heure, Etc.
ATTENTION : les noms des variables ne doivent pas scrire nimporte comment. Il a deux
ou trois choses respecter. Ils doivent commencer par une lettre et ne doivent contenir que
des lettres, des chiffres, ou le signe underscore (honteusement appel tiret du 8). Pas
despaces dans le nom crivez plutt : nombreDeVies mais vous devez respecter la casse
(minuscule / Majuscule) : nombreDeVie et NombreDeVie nest pas pareil. Et dernire
chose : nutilisez pas de mots rservs par le langage C# comme :
Class, public, Int, string, float etc
Mais attention les variables ont un type, imaginez-vous sortir de lanimalerie ramener un
Hamster dans une boite en carton avec des trous pour respirer cest bien pour lui mais pas
pour un poisson. Ni mme pour transporter de leau. Leau et le poisson sont facilement
transportable dans un sac en plastique mais un Hamster ne pourra pas tre transport
comme a. Et bien cest exactement le mme principe pour les variables.

Voici les principaux types de variables :


int (Integer) : pour stocker les nombres entiers comme : 1 ou 10 ou 200. Exemple
dutilisation : le nombre de vies.

float : pour stocker les nombres dcimaux comme : 1.25f ou 5.42f ou 69.12f. Exemple
dutilisation : un compte rebours. Petites prcisions sur les floats : La virgule est
reprsente par un point (notation Anglo-saxonne) et la fin dun nombre float vous devez
mettre un f.
bool (Boolean) : reprsente que deux valeurs possible : soit true (vrai) soit false (faux).
Trs pratique pour tester une condition (on y reviendra). Exemple dutilisation : stocker ltat
du perso : true (vivant) false (mort).

string : pour stocker du texte (Le texte se stocke entre guillemets double). Exemple
dutilisation : Nom du joueur, dialogues du jeu, etc

Il y en a dautres mais ce sont les principaux.

Cette partie sappelle la dclaration de variable. Maintenant que nos variables ont t
dclar (ligne 6 9) il faut les Initialiser et cest ce que nous faisons ligne 13 16. Pour ce
faire vous devez crire le nom de la variable nouveau, suivi du signe = et de la valeur de
la variable puis terminer par le point-virgule.

Les structures conditionnelles :

Les structures conditionnelles sont utilises pour tester des conditions et faire prendre
votre programme un autre chemin. Si elles nexistaient pas, votre programme ferait toujours
la mme chose sans pouvoir changer et surtout sans que vous y soyez pour quoi que ce
soit.
La structure conditionnelle la plus utilis est la structure If.
Elle scrit comme ceci :

Ne tenez pas compte du Debug.Log (Cest tir dun autre logiciel). a sert afficher le
rsultat entre parenthses. Mais cest diffrent pour Visual Studio.

Elle veut dire : Si la variable estVivant est gale true, alors la condition est respecte et
on va pouvoir excuter ce qui a entre les accolades. Notez plusieurs choses : il faut crire if
suivi de parenthses pour y mettre la condition lintrieur puis aprs la deuxime
parenthse on met des accolades et cest lintrieur de ces accolades que vous mettrez
le code excuter. (Noubliez pas le point-virgule. Attention pour tester une galit on met
deux signes =. On en met quun pour une initialisation ou une affectation (une affectation
cest donner une valeur a une variable).

Vous avez dautres faons de grer les conditions avec un IF. Imaginez que vous ayez
besoin dexcuter du code si le personnage est mort dans ce cas-l il existe le Else (Sinon).
Qui scrit comme a :

Mme principe mais sans parenthse vu que cest le code qui sexcute si la condition du IF
nest pas respecte.

Maintenant voici comment faire si vous avez plusieurs conditions mettre la vole :

Regardez jai rajout un Else if (Sinon si). Voil ce que a veut dire : si estVivant est vrai
alors il affiche : vous tes vivant. Si estVivant est faux (false) alors il ira tester la condition
du else if qui ici est nombreDeVies plus grand que 0. Donc sil est mort est que
nombreDeVies est plus grand que 0 il excutera le code lintrieur du else if, soit :
Afficher un message dans la Console rduire le nombre de vie de 1 avec linstruction :
nombreDeVies = nombreDeVies -1 ; et ensuite remettre estVivant true. (Et cest comme
a quon fait dans les jeux vidos). Si quand il meurt le nombre de vie restante est zro
alors il excutera le code du else, soit : Afficher le message GAMEOVER.

Le double signe & veut dire ET. Ce qui signifie que pour que cette condition soit vraie il faut
que la premire condition soit vraie mais la deuxime aussi.
Donc il faut que estVivant soit true et que nombreDeVies soit plus grand que 0. Si une des
deux conditions nest pas vrai ce code ne sera pas excut.

Rajoutez aussi cette ligne dans le Else :

On a vu le && pour tester si les deux conditions taient vrai mais il y a aussi le OU ||
deux barres que vous obtiendrez en faisant Alt Gr + 6 sur un clavier Azerty.
Il semploie comme && sauf que le code sexcutera si au moins une condition est vraie.
Voici la liste des oprateurs :

< plus petit que


> plus grand que
<= plus petit ou gal
>= plus grand ou gal
== gal

!= diffrent de
&& ET
|| OU
! NON mettre avant la condition, ex : !estVivant (si estVivant est faux)
Le Switch :
Le Switch est aussi une boucle conditionnelle qui va permettre dconomiser de la frappe et
dtre un peu plus lisible. Elle fonctionne comme ceci :

Vous crivez switch puis entre ses parenthses cest la variable tester. Cette variable
sera teste dans les lignes suivantes juste aprs avoir crit case. Noubliez pas les deux
points aprs chaque valeur. Aprs les deux points cest l que le code sexcutera. Vous
devez sparer les cases avec un break ; quand le code de cette condition est fini pour ne
pas que quil enchane avec la condition suivante et quil sorte du switch (vu que la condition
a t rempli et quil a excut son code il peut sortir. La dernire condition nest pas un
case mais un default cest au cas o aucune nest vrai il prendra celle-l par dfaut.
Noubliez pas les accolades.

Les Fonctions :
Enfin, nous y voil. Les fonctions ! Nous allons gagner un temps fou grce elles.
Laissez-moi vous prsenter les diffrents types :
Il y a les fonctions qui ne prennent pas de paramtres ce sont celles qui nont rien
lintrieur de leurs parenthses.
Celles qui prennent des paramtres et ces deux catgories se divisent en fait en 2 autres
catgories de fonctions car il y a celle qui renvoient une valeur et celles qui ne renvoient
rien. Donc pour les numrer il y a :
Fonction qui ne prend pas de paramtres et ne renvoie rien.
Fonction qui ne prend pas de paramtres et qui renvoie une valeur.
Fonction qui prend des paramtres et qui ne renvoie rien.
Fonction qui prend des paramtres et renvoie une valeur.

Expliquons-les une par une avec des exemples :

Mais tout dabord voici la structure dune fonction :


Son niveau daccessibilit (public ou private) son type de retour (le type de valeur quelle
renvoie ou void si elle ne renvoie rien) son nom (Mme rgles que pour les noms des
variables) et ses paramtres (avec dabord leurs types puis leurs noms).
Et gardez en tte quune fonction a deux tapes : sa description et son appel. La
description cest uniquement son fonctionnement mais cest chaque fois que vous
lappellerez quelle sexcutera.
La fonction qui ne prend pas de paramtres et ne renvoie rien scrit comme ceci :
Son action sera toujours la mme (a peut tre aussi afficher le menu pause).
Elle sappellera comme a :

La fonction qui ne prend pas de paramtres et renvoie une valeur scrit comme ceci :

Vous remarquerez que son type de retour est int puisquelle renvoie un int. Elle renvoie la
valeur grce linstruction return 20 * 20 ; Elle renverra donc cette valeur et sappellera
comme a :

tant donn quelle renvoie une valeur il est normal de la stocker quelque part et quoi de
mieux quune variable pour a ? Attention jai deux points importants souligner. Le premier
cest que comme vous le voyez on peut crer et initialiser une variable dans la mme
instruction, quand je fais :

int carreDe20 = AffichercarreDe20() ; Et la deuxime cest quune fonction qui renvoie une
valeur la renvoie toujours sa gauche on ne peut donc pas crire un truc du style :

AfficherCarreDe20() = 400 ou carreDe20 ou peu importe, a ne marche pas dans ce sens-


l.

La fonction qui prend des paramtres et qui ne renvoie rien scrit comme ceci :

Pour cette fonction il faut crire le type du paramtre quelle prend suivi du nom que vous lui
donnez je vais revenir sur ce point. Elle sappellera comme a :
Vous remarquerez deux choses, la premire cest quelle nest pas stocke dans une
variable.

Cest normal vu quelle ne renvoie rien. Et la deuxime chose qui peut vous sauter aux yeux
cest que le paramtre nest pas le mme dans la dfinition de la fonction et dans son
appel. Et bien ce dernier point est simple comprendre La dfinition de la fonction cest un
peu comme si vous expliquez les rgles des checs : le paramtre cest les blancs et vous
dites donc ce sont les blancs qui commencent (cest normal, ce niveau-l vous ne savez
pas encore qui va jouer) .

Mais une fois que vous appelez la fonction ou dans ma mtaphore que vous dmarrez une
partie, l vous connaissez les joueurs et pouvez (et DEVEZ) donc utiliser le vrai nom et dire
cest Arthur qui commence.

Pareil pour le paramtre vous donnez le vrai sinon a ne marchera pas. Si vous connaissez
lavance le nom du paramtre et que vous voulez marquer le mme dans la dfinition et
lappel vous pouvez (mais cest une fonction, il y a de grandes chances que vous lutilisiez
avec des paramtres qui varient).

Et pour finir La fonction qui prend des paramtres et renvoie une valeur scrit comme ceci :

Bon cest la mme que : AffichercarreDe20(), sauf quelle prend un paramtre traiter
avant de le renvoyer (ici elle multiplie le nombre de vie par deux du moins elle multiplie le
paramtre quelle RECEVRA (dans son appel, mais elle peut recevoir tout paramtre de
type INT).

Elle sappellera comme ceci :

Mieux vous pouvez faire un truc comme a :


En crant une nouvelle variable vous aurez toujours accs aux deux : votre variable
nombreDeVies et celle que vous venez de crer doubleDeVie.
2. Dmarrage et interface

Dans ce chapitre nous allons attaquer avec Visual Studio. Nous verrons comment
crer un projet et aussi les principaux menus et principales fentres.

Le logiciel Visual Studio se tlcharge sur le site de Microsoft (il y a une version
gratuite). Tlchargez-l et installez-l.

La version utilise dans ce livre est la version : Visual Studio 2015 .


Crer un projet :
Pour crer un projet il vous suffit de faire : Fichier / Nouveau / Projet.
Vous vous retrouverez devant la fentre suivante :

Un petit zoom simpose (Images suivantes):

Dpliez le menu install dans la colonne de gauche, puis Modles , puis Visual
C# , puis Windows , enfin, choisissez Bureau classique .

Dans lencart de droite vous devrez cliquer sur : Application Windows Forms.
Puis dans lencart du bas vous devez dfinir : le nom de votre projet, son emplacement,
ainsi que le nom de votre solution (une solution englobe plusieurs projets). En ralit les
projets sont un peu comme des modules pour une solution. Ici nous crons donc une
nouvelle solution, nous navons donc pas changer, la troisime ligne (voir limage
suivante) :

Cliquez sur OK.

Nous arrivons ici :


La fentre au centre avec les trois boutons classiques pour : rduire, agrandir ou fermer la
fentre, correspond au rendu de votre logiciel. Flicitations !

Dans la partie gauche du logiciel se trouve votre bote outils. Cest ici que vous prendrez
des composants pour les faire glisser sur la fentre de votre logiciel. Voici un aperu de
cette bote outils une fois droule :
Ces composants ne reprsentent quune partie de ce que vous pouvez ajouter votre
logiciel, mais nous y reviendrons.

Dans la partie droite en haut il y a lexplorateur de solutions, cest ici que vous verrez vos
projets, les fichiers qui composent vos projets/solutions, mais aussi les fichiers de code et
autres paramtres. Nous y reviendrons.
Ensuite, en bas droite (image suivante), vous avez les proprits de llment (le
composant) qui est slectionn. Par dfaut cest le Form1 vous avez donc ses proprits.
Form1 correspond la fentre principale de votre logiciel.

Les fentres sont appeles des Forms dans VS (Oui je vais parfois dire VS pour Visual
Studio).

En bas (image suivante), vous avez ce quon appelle dans la plupart des IDE
(environnement de dveloppement intgr) la console qui est lendroit ou vos erreurs seront
dtailles.

VS est un IDE.
Enfin en haut, vous avez le bouton pour lancer laperu de votre logiciel en temps rel :
Vous pouvez cliquer sur dmarrer :

Voil ce que lon obtient

Fermez laperu et retournez sur VS. Maintenant, double-cliquez sur le Form (sur le rendu
de votre fentre).

Vous vous retrouvez devant ce fichier :


Ce fichier cest la classe de votre Form1. Je vais vous expliquer ce quest une classe.

Une classe est un fichier qui regroupe les attributs et les mthodes dun ensemble. Par
exemple, une classe qui reprsente notre fentre, ici, Form1 :
Ses attributs (qui sont des variables) pourraient tre : Ses boutons, ses menus, sa couleur
darrire-plan, ses dimensions, sa position. Bref, tout ce qui la compose.

Quant aux mthodes (qui sont des fonctions) cela reprsente, ses actions : Rduire,
redimensionner, fermer, ouvrir, en gros changer la valeur des attributs.

Seulement voil, une classe est un moule et quand on utilise un objet cest lobjet lui-mme
que lon utilise et non pas son moule. Cest pourquoi quand on cre une classe et que lon
veut lutiliser on doit en crer un objet (le terme pro cest instancier une classe ).

Mais vous allez peut tre me dire : Comment se fait-il quune classe aussi complte que
Form1 qui gre tout ce que gre une fentre peut tre aussi vide que cela ?

Cest trs simple, regardez la ligne 13 :


public partial class Form1 : Form
Ne vous souciez pas de public partial pour le moment. Le mot cl class veut dire que
lon cre une classe qui aura pour nom Form1. Mais ensuite les deux points : suivi de Form,
veut dire que notre classe va hriter de la classe Form.

Hriter veut dire, quelle aura tous les attributs et toutes les mthodes de Form, mais quen
plus on va lui en rajouter dautres nous-mme (dans ce fichier) si lon veut.

Mettez votre souris sur Form et fates un : clic en maintenant la touche CTRL enfonce.

Vous voyez apparatre ceci :


Il sagit de la classe Form avec ses attributs et ses mthodes.

Le fait de lavoir hrit permet davoir les fonctionnalits de base dune fentre en travaillant
sur un fichier vide et plus simple manipuler. Sans avoir rcrire les mthodes et
attributs de bases.

Maintenant que vous avez compris vous allez me dire, ok on a la classe Form1, mais ou est
lobjet qui linstancie ?

Cest simple , droite dans lexplorateur de solutions, double-cliquez sur :


Program.cs (qui est le point de dpart de votre logiciel).

Vous avez le fichier suivant qui souvre :


Le Form1 est instanci (et un objet est cr) la ligne 19, en faisant :
new Form1() ;
Normalement (mais ici cest spcial) on doit stocker lobjet dans une variable, comme ceci :
monForm = new Form1() ;
Ainsi chaque fois que vous voudrez faire des oprations sur votre objet vous ferez
quelque chose du style :
monForm.Fermer() ; Un attribut ou une mthode sur un objet sutilise ou sappelle en
mettant un point entre le nom de lobjet et la mthode (ou lattribut). Mais on reverra a
souvent ne vous en faites pas.
3. premiers composants
Dans ce chapitre nous allons voir quelques composants que nous allons utiliser
pour habiller un peu notre fentre mais bien sur aussi pour lui donner une utilit.
Le Label :

Nous allons commencer par le label qui est un texte simple.


Retournez dans la fentre du design de votre logiciel et dans la bote outil gauche,
fates dfiler jusqu : Label (ou cherchez le dans la barre de recherche du dessus).
Quand vous lavez trouv, fates-le glisser dans la fentre de votre Form1 :

Votre premier Label.

Bon cest un peu trop basique mon got, alors mme si un chapitre est ddi aux
proprits nous allons quand mme y toucher un minimum ici.
Allez en bas droite dans lencart :
Proprits (attention les proprits concernent le dernier composant cliqu, donc il faudra
cliquer sur le label si vous voulez changer ses proprits).
Puis descendez jusqu trouver : Text et changez le texte du label :
Validez en appuyant sur Entre , vous allez voir le texte de votre label changer
instantanment :

Vous pouvez lancer le rendu en cliquant sur Dmarrer , mme si le rsultat est similaire
laperu :
Le Button (bouton) :
Le Button (bouton) comme son nom lindique est un bouton. Il sera donc cliquable. Fates la
mme opration de recherche que le label dans la bote outils, quand vous tombez sur le
bouton fates le glisser dans votre fentre.

Maintenant, plus dur, mais ralisable vu que lon vient de faire la mme chose pour le label,
je vous demande non seulement, de le renommer, mais aussi den crer deux autres.
Comme ceci :
Maintenant, je vous demande de double-cliquer sur chaque bouton. Vous allez tre redirig
chaque fois vers la classe Form1, mais vous revenez pour que chaque bouton ait t
double-cliqu. En double cliquant sur un composant, a vous bascule dans la classe en vous
crant une mthode, qui est un vnement click (pour le bouton). Il vous faut donc les
vnements clicks pour chacun des boutons comme ceci :

Ces vnements reprsentent les actions qui seront effectues chaque fois que vous
cliquerez sur lun deux.
Jai omis de vous prciser que chaque composant que vous crez est un objet de la classe
quil reprsente. Et pour avoir le nom de cet objet pour pouvoir lutiliser, il faut aller dans la
fentre des proprits et son nom est tout en haut de la pile :

Ici notre label se nomme : label1. Il est plus judicieux de le renommer ainsi que les boutons
car vous allez voir quaprs a nest pas vident de sy retrouver.
Retournez dans le code et crivez comme moi :
Dans lvnement du bouton rouge on fait un :
label1.ForeColor = Color.Red ;

Ce qui veut dire quau clic sur le bouton rouge on va changer la proprit ForeColor du
label (qui correspond couleur de premier plan) et on lui donne la valeur Red .

Color.Red signifie lattribut Red de la classe Color. Puis je fais pareil pour les autres
boutons (en changeant la couleur).

Ne fates pas comme moi. Renommez vos composants avant de double-cliquer dessus
sinon vous ne vous y retrouverez pas. BoutonRouge est plus parlant que button2. Il faut
juste respecter les mmes conditions que les noms de variables. Dailleurs a en est.
Voici le rsultat :

Quand vous cliquez sur le bouton Rouge, la couleur du label devient rouge, quand vous
cliquez sur Vert le label devient vert et sur Bleu il devient bleu.
Vous commencez certainement voir ltendu des possibilits. Mais nous nallons pas en
rester l. Continuons avec les TextBox.

Le TextBox :
Le TextBox est un champs de texte qui permet donc lutilisateur de taper un texte qui
pourra tre utilis ou trait.

Mme principe, dans la barre doutils cherchez TextBox et fates-le glisser. Jai choisi de
rajouter un bouton Valider ct (cest un simple bouton que jai nomm valider).

Ensuite, double-cliquez sur le bouton valider.

Ne confondez pas le nom du bouton avec son texte. Le texte cest ce qui saffiche lcran,
son nom cest le nom de la variable qui permettra de lutiliser :
En double-cliquant sur le bouton Valider a a cr son vnement click et jy insre le
code crit ci-dessus.

Label1.ForeColor = Color.FromName(textBox1.Text) ;
Dtaillons cette ligne :

Label1.ForeColor = veut dire que nous allons assigner une couleur au label quand on
cliquera sur le bouton valider.

Color.FromName(textBox1.Text) ; veut dire que lon appellera la mthode FromName


de la classe Color cest une mthode (fonction) qui renvoie la couleur que vous lui donnez
en paramtre.

Mais ici en paramtre jai marqu textBox1.Text textBox1 est en fait le nom de mon
TextBox (que je nai pas renomm) et .Text (point Text) signifie lattribut Text de mon
textBox1.

Donc pour rsumer : quand on cliquera sur Valider, a donnera au label la couleur que lon
aura tap dans le champs de texte (en Anglais) .

Faisons un essai, je vais lancer le rendu et je vais rentrer le nom dune couleur en Anglais
dans le champs de texte puis je vais cliquer sur Valider.
Jai choisi DarkBlue qui est : Bleu Fonc.

Et mon label est immdiatement devenu Bleu Fonc.

ColorDialog (Bote de dialogue de choix de couleurs) :


Maintenant, nous allons implmenter la bote de dialogue qui permet de choisir une couleur
que vous avez tous dj vu au moins une dizaine de fois dans votre vie (si cest pas plus).

Pour cela jai dcid de me crer un nouveau projet pour plus de clart mais vous fates
comme vous voulez. Vous aurez besoin, dun Label et dun bouton.
Voici ma fentre :
Maintenant, double-cliquez sur le bouton et crivez le code suivant dans la fonction qui vient
de se crer :

Nous crons un objet de la classe ColorDialog que nous nommons cd .


Sur la ligne suivante nous mettons dans une instructions If :

cd.ShowDialog() == DialogResult.Ok
Qui se traduit par : Si dans la bote de dialogue qui va souvrir, lutilisateur clique sur
OK .

Alors dans ce cas la condition du If sera vrai et le code lintrieur de ses accolades sera
excut. Cest dire : que la couleur du label sera la couleur que lutilisateur aura choisi
dans la bote de dialogue avant de cliquer sur OK .

On lance le rendu :
Nous allons maintenant cliquer sur OK et la bote de dialogue du choix des couleurs va
souvrir. Nous allons en choisir une et si nous cliquons sur OK , la couleur du label
prendra la couleur que nous avons choisi.

Si nous cliquons sur Annuler ou Cancel (a dpend des systmes), rien ne se


passera, mais nous aurions pu grer ce cas aussi.

La bote de dialogue souvre au clic sur le bouton.


Nous choisissons une couleur et nous cliquons sur OK .

Le Label a prit la couleur que nous avions choisi.

Maintenant, nous pouvons empcher louverture de longlet des couleurs personnalises, en


faisant un :
cd.AllowFullOpen = false ;
Ce qui bien sur, sans surprise nous donne le rsultat attendu (image suivante) :

Impossible daccder aux couleurs personnalises.

On peut aussi faire linverse et forcer lencart des couleurs personnalises souvrir ds le
dbut, en faisant un :

cd.FullOpen = true ;

L aussi, sans surprise le rsultat est au rendez-vous :


Les couleurs personnalises sont ouvertes ds le dbut.

Je prcise que nous ntions pas oblig de crer un objet de la classe : ColorDialog. Nous
aurions trs bien pu le faire de la mme manire que les fois prcdentes, savoir :
faire glisser le composant depuis la barre doutils jusque sur la fentre, mais comme vous le
savez maintenant, les composants sont des classes que lon instancie en objet et cest la
mme chose pour tous. Vous pouvez soit les faire glisser, soit les crer dans le code.

Mais voici la fentre proprits que vous auriez eut si vous aviez fait glisser le composant
ColorDialog sur votre fentre au lieu de le crer de toute pice :
Les proprits du composant ColorDialog

OpenFileDialog (bote de dialogue : ouvrir un fichier) :

Nous allons maintenant voir la bote de dialogue qui nous permet douvrir un fichier. Vous
pouvez soit la crer en code, soit la faire glisser depuis la bote outils.

Jai chang le texte du bouton en : Ouvrir .

Je vais crer le composant OpenFileDialog en le faisant glisser depuis la bote outils, ce


qui me donne la fentre proprit suivante :

Puis je vais dans le code en prenant soin de double-cliquer sur mon bouton pour quil me
cre lvnement click et jy ajoute le code suivant :

Ce qui aura pour effet de changer le texte de label1 quand lutilisateur validera la bote de
dialogue en donnant au label le texte : Fichier ouvert : + le nom du fichier (la proprit
FileName de lobjet openFileDialog est le nom du fichier slectionn) :

Bote de dialogue pour ouvrir un fichier

Ce qui nous donne :

Maintenant nous allons changer le titre de la bote de dialogue :

On change le titre avec la proprit : Title.


Le titre a bien chang.

Maintenant nous allons rajouter des filtres pour diffrentes extensions de fichiers grce la
proprit Filter. crivez dans le code :

Le premier lment est le nom que vous souhaitez donner votre filtre, puis vous ajoutez
une barre verticale avec les touches Alt Gr + 6 sur un clavier Azerty et ensuite vous mettez
une toile, puis un point suivi de votre extension :
Ce qui nous donne :

Cela nous filtre uniquement les images PNG.

Vous pouvez (si vous forcez sur les yeux, voir marqu en bas droite :
Truc bidon (*,png)
On peut bien sur en avoir plusieurs :
Il suffit de les sparer par une barre verticale.

Voyons maintenant le cas ou lon clique sur Annuler :

Pour grer lannulation.

Il suffit de rajouter un else if et au lieu de mettre un DialogResult.Ok on met un


DialogResult.Cancel , puis dans le texte qui sexcute je choisi de changer le texte du
label1 et de mettre : Vous avez annul .
Essayons, la bote de dialogue souvre mais au lieu de choisir un fichier je clique sur
Annuler :

PictureBox :
Le PictureBox est un cadre qui va accepter une image. Fates-le glisser depuis la bote
outils et essayez de vous rapprocher le plus possible de ce rsultat :

Ma nouvelle fentre, pour utiliser les images.


Ensuite, aller dans le code, mais sans double-cliquer, ouvrez le fichier depuis lexplorateur
de solutions, ou alors un clic droit sur un composant et puis sur : afficher le code .

Nous allons faire quelques modifications depuis le code prcdent :

Premirement, dans le filtrage des extensions je ne mets que PNG et JPEG, puisque nous
cherchons une image.
Puis dans le If la premire ligne, au lieu de changer le texte du label1 en lui donnant le
FileName, je lui donne le SafeFileName, ce qui aura pour but de supprimer le chemin du
fichier et de ne mafficher que son nom.

Enfin, juste en dessous je modifie la proprit : ImageLocation de notre objet pictureBox1


et je lui donne comme valeur le FileName de mon openFileDialog1. Ce qui signifie que
quand lon va cliquer sur OK, limage que nous aurons choisi sera assign notre
pictureBox1.

Faisons un essai :

Je lance le rendu, je clique sur Ouvrir et je choisi une image, puis je valide.

Limage va safficher dans le cadre du pictureBox1 et le texte du label1 va se changer


en : Fichier ouvert : Le nom du fichier.png .
Le nom du fichier est plus propre : Mon_Best_Seller.png .

Sauf que voila, le fichier est lgrement coup. Peut-on grer a, ou cela est d au
hasard ? Non ce nest pas du hasard, nous pouvons le modifier et nous avons plusieurs
possibilits pour cela.

Il sagit de la proprit SizeMode, que lon peut grer dans longlet des proprits ou dans
le code. Voyons les choix notre disposition :
Avant cela, je vais vous montrer la proprit Image, qui va vous permettre de charger une
image depuis votre disque dur ou depuis le Web :
Cliquez sur le champs ct du mot Image et cliquez sur le bouton qui saffiche.

Un menu souvre, importez une image en cliquant sur ressource locale puis importer,
choisissez une image et pour finir cliquez sur OK, comme je lai fait sur la capture suivante :

Nous allons maintenant dans les proprits de notre pictureBox1 et nous descendons
jusqu SizeMode :
Jusqu prsent nous tions sur : Normal , commenons avec : StretchImage :
StretchImage :

Cest un tirement de limage. Nous pouvons donc la voir en entier.

AutoSize :
Vous croyez que cest le mme mais non. Ce mode ma agrandi mon pictureBox1 qui
dpassait mme de ma fentre que jai alors agrandi.

CenterImage :
Ce mode l, vous centre limage.

Zoom :
Ce mode l lair de se coller en d-zoomant, soit sur lhorizontal soit sur le vertical en
fonction du ratio de limage daprs le pictureBox1.

Clipboard :
Le Clipboard est le presse-papier en Franais. Cest lendroit ou sont stockes vos
donnes quand vous fates Copier avant de faire Coller .

Essayez de reproduire le contenu suivant dans votre fentre :


Renommez les boutons : copier et coller. (Renommez leurs noms et leurs textes).

Puis tour de rle, double-cliquez sur chacun des boutons, pour crer leurs vnements
clicks.

Ensuite Insrez-y le code suivant :

Dans lvnement click du bouton copier on va utiliser la fonction SetImage de la classe


Clipboard. Cette classe sutilise telle-quelle sans crer dobjet (on dit quelle est statique
quand une classe ne sinstancie pas).

Cette fonction prend en argument une Image quelle va copier dans le presse papier. Je lui
donne donc limage de mon pictureBox1. Puis dans le code du click du bouton coller, crivez
le code suivant :

Cette fois-ci on lui dit que la proprit Image de pictureBox2 est gale
Clipboard.GetImage(), qui est une fonction qui rcupre limage qui se trouve dans le
presse-papiers.

Pour rsumer : Quand vous cliquerez sur Copier, dessous le pictureBox1, a copiera
limage dans le presse-papiers et quand vous cliquerez ensuite sur coller, a la rcuprera
pour la mettre dans le pictureBox2 (dans sa proprit : Image.

Faisons un essai :

Je lance le rendu :

Je clique sur le bouton, copier qui se trouve dessous pictureBox1. Ce qui a pour effet de
copier son image dans le presse-papiers.

Puis je clique sur coller, qui se trouve dessous le pictureBox2 (mme si pour le moment il
est invisible dans le rendu. Ce qui aura pour effet de lui donner la copie de limage que lon
a copie. Puisquil la rcuprera dans le presse-papiers.
Bien sur nous pouvons le faire avec du texte (avec des TextBox et des Labels si vous
voulez). Nous pouvons mme le faire avec de laudio, mais le sujet ne sera pas abord
dans ce livre.

MessageBox :
Le MessageBox est une bote de dialogue, il est trs facile de limplmenter :

Il suffit dutiliser la mthode Show de la classe MessageBox et dy insrer le texte en


argument de la mthode, que jai plac dans la fonction du bouton de lvnement Click du
bouton coller. Ce qui aura pour effet dafficher le MessageBox quand on collera une image.
Faisons un essai sur notre prcdent exemple :

Je lance le rendu, je copie limage du pictureBox1 ensuite je clique sur coller, qui est le
bouton de notre pictureBox2.

Une fois que cest fait, une bote de dialogue saffiche avec le texte que je lui avais
renseign. (Rsultat image suivante) :

Mais je trouve cette bote de dialogue un peu basique. Nous allons dans un premier temps
lui rajouter un titre. Puis ensuite nous verrons comment lui rajouter des boutons.

Pour le titre il suffit de renseigner un deuxime texte dans la fonction Show en le sparant
du premier par une virgule :
Rsultat :

Maintenant, voyons pour les boutons :

Avant la cration du MessageBox vous devez crer une instance de dune numration qui
contient tous les types de boutons. Mais quest-ce quune numration ?

En gros une numration est une liste de valeurs et en crant une instance de lnumration
(un peu comme avec une classe) vous crerez une variable qui reprsentera une des
valeurs de cette liste.

Lnumration en question sappelle : MessageBoxButtons :

Ensuite il suffit de renseigner notre instance de cette numration aprs le titre dans la
fonction Show (spar par une virgule).
Rsultat :
Mais nous ne verrons pas pour le moment comment savoir sur quel bouton lutilisateur a
cliqu.

ComboBox :
Le ComboBox est une liste droulante qui vous permet de choisir un lment de cette liste.
Fates glisser un ComboBox dans la fentre et ajoutez un bouton, comme moi :

Puis cliquez sur la petite flche droite du ComboBox et ensuite sur Modifier les lments :
Dans la fentre qui saffiche inscrivez-y les quatre valeurs du SizeMode dun PictureBox
(quon a vu plus haut), en en mettant quun sur chaque ligne. Puis cliquez sur OK .
Ensuite, double-cliquez sur le bouton que vous avez cr ct du ComboBox et entrez
dans la fonction de Click le code suivant :

Ce code signifie qu chaque fois que vous cliquerez sur le bouton, le pictureBox1 recevra
dans sa proprit: SizeMode llment que vous avez slectionn dans votre ComboBox.
Faisons un essai. Je lance le rendu et je slectionne : Normal , puis je clique sur le bouton :
Limage prend sa taille normale.

Avec StretchImage

Avec AutoSize
Avec Zoom
Pour aller plus loin ajoutez un TextBox, un bouton et un ComboBox, comme moi :

Puis double-cliquez sur le bouton et ajoutez-y le code suivant :

Code qui signifie : Qu chaque fois que vous cliquerez sur le bouton, un lment sera
ajout au ComboBox grce sa mthode Add qui reoit comme argument le texte contenu
dans le TextBox.

Puis ensuite le texte du label1 changera pour afficher le texte du TextBox + Ajout .

Faisons un essai. Je lance le rendu :


Je rentre un prnom dans le TextBox, puis je clique sur Ajouter :

Le prnom t ajout. On continue :

Jai rajout plusieurs prnoms


Capture plus large pour vous montrer que quand on ajoute un prnom (ou ce que lon veut),
le label1 change aussi comme prvu.
4. Les proprits
Dans ce chapitre nous allons (enfin) tudier les proprits des composants. Vous
verrez que nous pouvons faire beaucoup de choses avec.
Les proprits avant lancement :

Nous allons manipuler dans un premier temps les proprits avant le lancement du rendu
cest dire, dans lencart des proprits en bas droite.
Voyons celle du Form1 :

Je commence par changer le BackColor du Form qui est la couleur darrire-plan (Vous
navez qu choisir parmi la liste de couleurs :

On continue :
En droulant la proprit Font je peux accder plusieurs paramtres lis la police de
caractre de la fentre. Je change la taille avec Size:10. Jaurai pu aussi changer le type
de police.
Ensuite dans ForeColor (couleur de premier plan) je mets : Red :

Je change licne, en allant choisir une icne sur mon PC :

Ici je change lopacit (la transparence) de la fentre :


Je lai positionn devant mon profil Facebook, pour que lon voit la diffrence (car devant
une feuille blanche il ny avait pas trop de diffrence). Comme vous le voyez, cette
transparence donne un effet trs geek, en fonction de la couleur de dpart.

Ensuite je change le titre de la fentre avec la proprit : Text.

Ensuite, dans lordre il y a : TopMost pour garder la fentre toujours au premier plan.
TransparencyKey qui est la couleur de transparence que vous choisissez suite a :
chaque fois que cette couleur sera sur votre fentre, elle deviendra transparente. La
dernire aussi est intressante, il sagit de ltat que prendra la fentre au dmarrage :
Normal, Rduite, Plein cran.

Les proprits en temps rel :


Rajoutez dans votre super logiciel, le composant TrackBar, pour vous retrouver avec un
rendu comme celui-ci :

Vous tes capable de modifier les proprits tout seul pour arriver au mme rsultat.
Double-cliquez sur la TrackBar, ensuite dans le code, recopiez :

Explications :
On dit qu chaque fois que lon va dplacer le curseur de la barre (cest lvnement que
lon a cr en double-cliquant). La proprit : this.Width (this veut dire : lobjet de cette
classe et width veut dire la largeur, donc : la largeur de Form1) sera gale la valeur de la
TrackBar fois 15. La valeur sera la position de la TrackBar :

Il y avait un minimum et un maximum paramtrer dans les proprits. Ce qui nous donne :
chaque fois que lon bouge la glissire, la largeur de la fentre change.

Bon jaurais pu trouver un meilleur exemple, mais rien ne vous empche de le faire. a vous
fera un bon entranement.
5. Les vnements

Dans ce chapitre nous allons voir les vnements, mme si nous les avons plus ou
moins parcourus. Vous allez voir ici quelque chose de primordial alors soyez
attentifs.

Lencart des vnements :


Lencart pour grer les vnements se trouvent au mme endroit que lencart des
proprits, mais il faut cliquer sur un onglet pour le faire apparatre :

Pour lafficher il suffit de cliquer sur licne en forme dclair. Puis pour revenir aux
proprits il suffit de cliquer que licne sa gauche. Et enfin dernire astuce :

Les deux premires icnes gauche correspondent au type daffichage que ce soit pour les
vnements ou les proprits. Vous avez le choix entre affichage de A Z ou affichage
group par catgorie.
Regardez les images suivantes :
Pour les proprits :

Les proprits de A Z.
Les proprits groupes par catgories.

Pour les vnements :


Les vnements de A Z.
Les vnements groups par catgorie.

Pour crer un vnement sur un composant comme lvnement click quon utilise sur le
bouton depuis le dbut. Rien de plus simple ; il suffit de cliquer sur le composant qui
ncessite lvnement, daller dans lencart des vnements et de choisir celui que vous
voulez en lui donnant un nom.
Voyons un peu ce que nous avons pour un ComboBox par exemple.
Je reprend ici notre exemple sur le ComboBox qui servait changer le SizeMode.
Vous en avez pour presque tout. Quand le texte change, quand la police change, quand la
couleur darrire-plan ou de premier plan change.
Je continue de chercher et je trouve mon bonheur dans :

SelectedIndexChanged qui dclenche lvnement quand on choisi un lment du


ComboBox. Cest parfait, je naurai plus besoin du bouton Changer dimension. Je donne
un nom dans le champs de texte ct de llment. Je le nomme ElemChanged et
jappuie sur Entre .

Je suis rebascul dans le code et je profite pour copier le code que javais crit au dbut,
mais cette fois-ci dans la fonction de mon vnement : ElemChanged :
Faisons un petit test. Je lance le rendu :

Je ne touche plus au bouton, peine je change la valeur que limage est redimensionne.

Je le change encore, cest instantan. Mais inutile ne nous attarder l-dessus.


Regardons lvnement : MouseMove sur Form1, qui va capturer se dclencher
chaque fois que la souris va bouger :
Je lui donne le nom : Moving :

Chaque fois que la souris va se dplacer, le texte du label1 va changer pour afficher :
position souris : suivi de :
e.X.ToString() et e.Y.ToString(). Je vais vous dtailler ce e .
Comme vous pouvez le voir dans les paramtres de cette fonction, le deuxime paramtre
est un MouseEventArgs (un argument de lvnement souris) et il est instanci sous le nom
e (en quelques sortes).

Ce qui veut dire en gros (et pour rsumer trs simplement) que ce e reprsente une
sorte dobjet qui fait rfrence une classe souris (cest rsum de faon basique mais
cest pour vous faire comprendre).

Donc les attributs (ou proprits si a vous parle plus que le terme attribut) sont tous des
attributs qui ont un rapport avec la souris, comme :
Sa position X, sa position Y, ses boutons, ou les clics gnrs.
Vous pouvez accder ces attributs dans la fonction dvnement en tapant e suivi dun
point. La liste des attributs disponible va safficher.
Mais ici dans cet exemple jutilise les attributs : position X et position Y.
Et pourquoi jai rajout : ToString() ? Cest trs simple, la mthode ToString() permet de
convertir un nombre en texte.

Quand je lance le rendu et que je dplace la souris je vois donc le label1 qui change de
texte pour afficher ceci :

Et bien sur a change chaque fois que je bouge ma souris.


6. Composant personnalis
Dans ce chapitre nous allons voir comment crer nos propres composants ou
comment hriter de composants dj existants.

Un Login personnalis :
Nous allons commencer par crer un contrle Login personnalis. Pour ce faire allez dans
lexplorateur de solutions et fates un clic droit sur votre projet. Ensuite cliquez sur
Ajouter puis Contrle utilisateur comme sur limage suivante :

Ensuite (voir image suivante), slectionnez : Contrle utilisateur, donnez un nom votre
contrle (en bas) et validez. Je nomme le mien MonControle.

Nous allons faire glisser les composants que nous voulons dans notre nouveau contrle.
Cest la mme manipulation que quand vous faisiez glisser les contrles dans un Form.
Ajout dun nouveau contrle

Donc en ralit comment va se prsenter notre classe ?


Cest trs simple, vu quelle hrite de la classe UserControl (comme tous les contrles du
Framework), elle sera un UserControl avec des composants que nous allons lui rajouter.
Tout comme la classe Form1 au dbut, nous naurons pas besoin de crer les attributs
pour pouvoir nous en servir. Il nous suffira simplement dutiliser le nom du contrle enfant
suivi dun point et du nom de lattribut pour y accder.

Je commence par ajouter un groupBox, pour au final avoir ce rsultat :


Jai rajout deux labels et deux TextBox ainsi quun bouton pour valider. Rien de bien
particulier si ce nest que le TextBox de Password naffiche que des toiles au lieu du texte.
Il suffit pour cela de changer la proprit PasswordChar comme ceci :

Pour ceux qui se demande ce que signifie les mots public et private devant les
fonctions, mthodes et attributs. Il sagit pour faire simple du niveau de visibilit. Mais ce
livre ne traite pas le sujet de la programmation oriente objet, donc je fais au plus simple de
ce ct l.

Je vous demande de changer la visibilit de vos contrle (dans les proprits) pour pouvoir
y accder. Allez dans les proprits de vos contrle (un par un ) et changez comme sur
limage suivante :

Gnrez votre solution, en faisant : Gnrer/+Le nom de votre solution ou le raccourci :


Maj+F6 :

Vous pouvez maintenant voir votre propre contrle sur la gauche dans la bote outils (en
haut) :
Fates-le glisser sur le Form1 (comme vous avez lhabitude de le faire) :

Maintenant, fates un clic droit sur le Form1 (pas sur votre contrle) et cliquez sur afficher
le code . Nous allons crire du code.

Nous allons crer lvnement du bouton de votre contrle. Mais pourquoi ne pas lavoir fait
avec un double-clic sur le bouton vous allez me dire ?

Tout simplement parce que le bouton nest pas prit en compte indpendamment en faisant
cela. Votre contrle nest ici considr que comme un seul bloc. Ce qui veut dire que si
vous double-cliquiez quand mme sur le bouton, vous crerez lvnement suivant :

Qui est non pas un vnement du bouton, mais un vnement de votre contrle. Qui se
dclenche quand il est charg (mais l nest pas la question).

Donc dans Form1 nous allons crer lvnement comme ceci (mais laissez-moi vous
lexpliquer avant de le recopier):
Nous allons souscrire ou nous abonner (ce sont les termes exacts) notre vnement clic
du bouton la main. Pour cela nous devons donc faire :
monControle1.button1.Click.

MonControle1 est accessible comme cela parce que vous avez mis sa proprit modifiers
public. Ensuite en faisant : point suivi de button1 on accde au bouton de votre contrle par
son nom (ici : button1) et en rajoutant point Click on accde lvnement Click du bouton.

Maintenant cest l que je vous apprends lastuce :


En rajoutant += (plus gal) qui est la faon de faire pour sabonner un vnement, il ne
vous reste plus qua taper la touche tabulation de votre clavier et lvnement se crera
automatiquement, comme ceci :

Rajoutez-y le code suivant :

Ce qui signifie :
Si quand tu cliques sur le bouton il y a au moins un caractre dans le champs Login et aussi
dans le champs Password alors larrire-plan du contrle devient Vert sinon il devient
Rouge.

Faisons un essai :
Vous allez devoir vous connecter, si vous oubliez un des deux champs, il y aura une erreur
et le contrle sera rouge sinon si vous remplissez les deux il sera vert (cest assez
simpliste, mais cest juste pour vous montrer que a marche. Aprs cest vous davoir les
ides).

Ici je lance le rendu

Je rentre que le Login et je valide sans le mot de passe. Cest Rouge


Je rentre le Login et le mot de passe et je valide. Cest Vert
Partie II : Projet
7. Notre premier logiciel
Dans ce chapitre, nous allons crer un logiciel avec ce que nous avons vu tout au
long de ce livre. a ne mrite pas vraiment le terme de logiciel (pour cet exemple)
mais a va tre vraiment sympa et a va vous donner pleins dides.

Il sagit de crer votre propre aperu dimages sauf que l limage ne saffichera que
si lon rentre le bon mot de passe. Autrement dit : Plus personne ne peut accder
vos photos et images en tout genre.

Alors bien sur il y a une petite parade a : il suffit de faire clic droit sur la photo et
de louvrir avec un autre logiciel, mais bon cest dj un bon dbut.
Dmarrons :
Crez un nouveau projet. Jai nomm le mien : ImageReader. Maintenant vous allez devoir
ajouter votre contrle personnalis du chapitre prcdent.
Pour cela vous devez faire un clic droit sur votre projet et faire : Ajouter puis lment
existant Ou le raccourci : Maj + Alt + A.

Ensuite slectionnez votre composant (il y en a trois : la classe <.cs>, le designer


<.designer.cs> et le <.resx>. Prenez le .cs).
Faites glisser un PictureBox dans votre Form, puis ensuite votre composant Login. Votre
Form doit ressembler ceci :
Voici une partie de ses proprits :

LAutoSizeMode est ce qui permet dadapter la fentre du Form la taille de limage. Et le


FormBorderStyle correspond la barre de titre : Ici le FixedToolWindow permet davoir
uniquement le bouton fermer. Pour licne je suis all chercher une icne gratuite sur :
https://www.iconfinder.com/ , ce qui permettra de reconnatre que mes images souvrent
automatiquement avec mon propre logiciel en voyant mon icne (Je trouve a plutt
sympa).

Attention :
Changer licne dans les proprits ne la change que dans le logiciel (barre des taches et
barre de titre), mais si vous voulez quelle change lextrieur comme son fichier excutable
par exemple : il faut aller dans : Projet/Proprits de ImageReader ( remplacer par le nom
de votre projet) Puis dans longlet : Application :
Et ensuite il faut aller la chercher comme sur limage suivante :

Maintenant voici une parties des proprits de votre PictureBox :


Le SizeMode doit tre en AutoSize. Et la proprit Dock doit tre sur : Fill, pour remplir
tout le Form.
Passons maintenant au code. Nous allons commencer avec le fichier Program.cs, qui est
le point de dpart dune application.

Le Code :
Il y aura deux faons de se servir de ce logiciel.
Soit nous ferons glisser limage sur le fichier excutable du logiciel.
Soit nous choisirons dans les proprits de limage que celle-ci doit toujours souvrir avec ce
logiciel, ce qui signifie que nous naurons plus faire glisser limage sur licne de notre soft
mais simplement louvrir en double-cliquant dessus.

Donc si vous le fates pour une image PNG par exemple, toutes les images PNG souvriront
comme a (il faudra le faire pour chaque extension : JPEG, GIF etc.).

Ouvrez votre fichier : Program.cs :

Les explications ici, vont se scinder en deux parties. Celles pour ceux qui ont le niveau en
langage C# et celles pour les dbutants dans ce langage de programmation.

Explications pour ceux qui ont le niveau en C# :


La fonction Main est le point dentre de lapplication, je lui donne donc en argument ce qui
va reprsenter mes images. Mais le problme cest que la fonction Main ne prend pas
dimages. Par contre elle accepte les Strings, alors je lui envoie un tableau de Strings
(comme a je pourrai viter un bug si jen ouvre plusieurs la fois).

Mais comment va faire la fonction Main pour comprendre que ces Strings sont mes
Images ? Cest trs simple : Je vais quand mme lui envoyer des images. Cest juste que
comme elle ne les accepte pas, elle ne prendra que leur chemin sous forme de String
chaque fois que je lui en enverrai une.

La suite se passe la ligne 22 dans le foreach. Je boucle sur tous les Strings reus et pour
chaque String (chaque chemin dimage) je cre une instance dune image en envoyant le
chemin dans le constructeur de la classe Bitmap. Ainsi, je peux envoyer mon image en
argument de mon Form1 la ligne 25. Jai choisi denvoyer aussi son chemin, mais jaurai
pu men passer.

Lexplication des dbutants sera pour vous un bon rsum.

Explications pour ceux qui nont pas le niveau en C# :


Jenvoie une image dans la fonction Main, mais elle retient que son chemin, car elle
naccepte que du texte, ensuite elle cre une image partir de son chemin et elle lenvoie
dans Form1 (sous forme dimage).
Allons maintenant dans Form1 pour dtailler la suite.

Nous savons ce niveau que notre Form1 reoit en argument une image (et aussi un String
qui reprsente son chemin, mme si a ntait pas une obligation).

Jassigne limage que le Form reoit en argument la proprit image du PictureBox la


ligne 26, ainsi que le chemin de limage la proprit Text du Form (ce qui aura pour effet
dtre le titre de la fentre).

Ensuite, la ligne 28 je fais appel une fonction (que je vais crer plus bas) qui permet
dalterner entre la visibilit du contrle de Login et de limage du PictureBox. En gros quand
le Login sera visible, je cacherai limage et quand limage sera visible je cacherai le Login.
Mais vous verrez le dtail de la fonction plus loin.

La ligne 29 vous la connaissez, il sagit de labonnement lvnement du clic du bouton de


mon contrle Login. Nous lavons vu au chapitre prcdent, je ne le dtaille pas.

Voici notre vnement du bouton de validation sur notre contrle Login. Je lui dit ici que si
quand il a cliqu sur le bouton, le Login est Julien et que le mot de passe est : aaaa, alors il
met lcran en vert et il inverse largument de la fonction montrer_cacher.

Vous navez toujours pas vu cette fonction, mais avec les explications que je vous ai donn
plus haut et en voyant que largument est pass de false (au dbut, quand il ne montrait que
le Login) true, maintenant. a devrait vous mettre la puce loreille que limage saffiche
ici.

Je prcise que la ligne qui met lcran en vert ne sert strictement rien vu que limage
saffiche instantanment mais je lai laiss pour que vous ayez un repre par rapport au
chapitre prcdent.

Puis dans le else (en cas de mauvais mot de passe, ou login), lcran se met en rouge et la
fonction monter_cacher se remet nafficher que le Login (vu que ctait dj le cas, cette
prcision est inutile, mais cest aussi un repre pour vous).

Voici notre fonction : montrer_cacher. Elle reoit un boolen en entre (sans surprise) et la
proprit visible du PictureBox sera gale la valeur de se boolen. Mais la proprit
visible de mon contrle Login sera gale linverse de ce mme boolen.

Oui, mettre un signe ! (point dexclamation) devant un boolen donne son inverse. Ce
qui fait que, peut importe la valeur de ce boolen, le PictureBox et le Login ne pourront
jamais tre affichs en mme temps.

Essai :
Faisons un essai. Vous devez gnrer votre projet. Pour cela vous avez deux versions
possibles : La version Debug (celle que vous utilisez en ce moment) et la version Release
(qui est la version finale). Elle se changent ici :

Ensuite vous gnrez le projet avec Maj+F6.


Puis vous allez dans le dossier ou vous avez enregistr votre projet :

Aller dans ImageReader


Puis dans bin

Puis dans la version que vous voulez utiliser

Voil, votre excutable est ici

Maintenant, soit vous fates glisser vos images sur cet excutable, soit (et cest la meilleure
solution) vous fates un clic droit sur une image, puis proprits puis Modifier:
Cliquez sur modifier, pour changer le logiciel douverture

Cliquez sur : Plus dapplications puis descendez tout en bas et choisissez de louvrir
avec un programme diffrent.

Choisissez le premier .exe de votre projet

Maintenant, double-cliquez sur votre image.


Vous devez rentrer votre login et votre mot de passe pour voir votre image

Je provoque une erreur volontaire pour tester

Le login est mauvais, je ne peux pas afficher limage


Cette fois-ci je rentre les bons. Je valide
Maintenant, a marche

Attention, si vous avez dfini votre logiciel pour une extension dimage (PNG par
exemple) il faudra aussi dfinir votre logiciel comme logiciel par dfaut pour les autres
extensions (JPEG, GIF etc.).

Si vous fates des modifications votre code, il faudra redfinir lexcutable comme
logiciel par dfaut.

Vous remarquerez que si limage est trop grande, vous ne la verrez pas en entier et vous
navez aucun moyen de la redimensionner dans ce projet. Vous avez tout de mme les
comptences pour palier ce problme. Vous savez grer le SizeMode dun PictureBox. Il
faudra aussi toucher lAutoSize du Form1 si limage dpasse une certaine valeur et rentrer
vos propres valeurs pour la taille du Form1.
8. Bibliographie

Du mme auteur:

Manuel indispensable pour Unity.


Dans ce livre vous apprendrez
crer des jeux vidos avec le
moteur de jeux : Unity, ainsi que
les bases du langage de
programmation C#. Ce qui vous
permettra de mettre en place la
logique de votre jeu.
Ladultre, les ex, les virus, comment les dmasquer
Dans ce livre vous apprendrez
comment votre ex vous piste, que
ce soit sur les rseaux sociaux
mais aussi sur votre boite mail.
Vous apprendrez aussi
dmasquer ladultre de votre
conjoint ainsi que les diffrentes
techniques mises en place par
Bien commencer avecpersonnes
certaines Python 3 pour vous
pirater.
Dans ce livre vous apprendrez les
bases du langage Python dans sa
version : 3.5. Parce quil faut bien
commencer un jour quand on veut
se lancer ; ce livre est fait pour
a !

Python 3 : niveau intermdiaire (couleur)


Dans ce livre on passe au niveau
suprieur. Vous apprendrez
crer des logiciels de
manipulations dimages avec les
bibliothques Tkinter et Pillow
(Pil).

Python 3 : niveau avanc


Dans ce livre a devient trs
pointu mais largement accessible
pour ceux qui ont suivi les deux
livres prcdent. Ici nous
apprendrons dissimuler des
donnes dans une image. Vous
pourrez dissimuler du texte ou
Python 3 :de mme une
dbutant image dans une image.
avanc
Dans ce livre regroupe en un seul
livre mes trois livres prcdent
sur Python :
Bien commencer avec Python 3
Python 3 : niveau intermdiaire
Python 3 : niveau avanc.
Le tout pour le prix dun seul livre.
Bien commencer avec Pygame
Dans ce livre vous apprendrez les
bases pour crer des jeux vidos
2D avec Pygame. Utilis avec le
langage Python cette bibliothque
vous permettra une multitude de
choses comme :
Animer vos personnages, grer
les collisions, grer les
interactions du clavier, de la
souris
Automatisation avecet bien dautres.
Python
Dans ce livre vous apprendrez les
bases pour automatiser des
taches avec le langage de
programmation Python. Que ce
soit des actions de clics,
dcritures de texte, de raccourcis
clavier ou de drag and drop
(glisser / dposer), vous
En vente sur Amazon.
automatiserez les taches qui
ncessitent ce types dactions.

Ce livre est prsent termin, je vous remercie de lavoir lu et jespre quil vous sera utile.
Si jamais vous lavez achet sur Amazon, je vous serai reconnaissant de laisser un
commentaire pertinent sur le contenu du livre ainsi quune note pour aiguiller les futurs
lecteurs.

Si vous avez des questions vous pouvez me joindre par mail :


julienfaujanet@gmail.com

Vous aimerez peut-être aussi