Vous êtes sur la page 1sur 45

M.

El Kadali

I.
II.

Page 1 sur 45

Table des matires


Les dclarations...................................................................................................................... 3

1. Les types................................................................................................................................... 3
2. Porte dune variable................................................................................................................ 3
a. Les variables globales............................................................................................................ 3
b. Variables globales un formulaire......................................................................................... 4
c. Variables globales au projet................................................................................................... 4
III. Instruction alternative............................................................................................................ 4
3. Syntaxe :................................................................................................................................... 4
4. Imbrication dinstructions alternatives...................................................................................... 5
IV. Structure rptitive................................................................................................................ 6
1. Nombre de rptitions connu.................................................................................................... 6
d. Structure for........................................................................................................................... 6
e. Structure foreach.................................................................................................................... 6
2. Nombre de rptitions inconnu................................................................................................. 7
a. Structure tant que (while)...................................................................................................... 7
b. Structure repeter jusqu'a (do while)....................................................................................... 7
V. Structure de cas..................................................................................................................... 8
VI. Les tableaux........................................................................................................................... 9
1. Tableau unidimensionnel........................................................................................................... 9
2. Tableau multidimensionnel...................................................................................................... 10
3. Tableau de tableaux................................................................................................................ 10
VII. Les formulaires..................................................................................................................... 10
1. Oprations courantes.............................................................................................................. 10
2. Les applications MDI et SDI..................................................................................................... 11
3. Contrles et composants de bote de dialogue........................................................................11
a.
b.
c.
d.
e.
f.

La proprit DialogueResult................................................................................................. 11
OpenFileDialog..................................................................................................................... 12
SaveFileDialog...................................................................................................................... 13
ColorDialog........................................................................................................................... 13
FontDialog............................................................................................................................ 13
PrintDialog............................................................................................................................ 13

M.El Kadali

Page 2 sur 45

VIII.Boite outils......................................................................................................................... 14
1. form......................................................................................................................................... 14
2. ListBox..................................................................................................................................... 14
3. Checkbox................................................................................................................................. 14
4. Radiobutton............................................................................................................................. 14
5. ComboBox............................................................................................................................... 15
6. ListView................................................................................................................................... 15
7. PictureBox............................................................................................................................... 16
8. dataGridView........................................................................................................................... 16
9. TreeView.................................................................................................................................. 17
10........................................................................................................................................... Timer
................................................................................................................................................ 17
11................................................................................................................................. ProgressBar
................................................................................................................................................ 17
12................................................................................................................................... StatusStrip
................................................................................................................................................ 17
13.................................................................................................................................... PictureBox
................................................................................................................................................ 17
14............................................................................................................................ dateTimePicker
................................................................................................................................................ 17
15............................................................................................................................ Les conteneurs
................................................................................................................................................ 18
g.
h.
i.
j.

FlowLayoutPanel................................................................................................................... 18
groupBox.............................................................................................................................. 18
Panel.................................................................................................................................... 18
splitContainer....................................................................................................................... 18

16................................................................................................................................... Les menus


................................................................................................................................................ 18
k. MenuStrip............................................................................................................................. 18
l. ContextMenuStrip................................................................................................................. 18
17......................................................Instanciation et personnalisation dynamique des contrles :
................................................................................................................................................ 19
a.
b.
c.
d.

Instanciation dun contrle................................................................................................... 19


Personnalisation dun contrle............................................................................................. 19
Positionnement un contrle.................................................................................................. 19
Ajout dun contrle au formulaire........................................................................................ 19

IX. Les vnements................................................................................................................... 20


1.
2.
3.
4.

Dfinition................................................................................................................................. 20
Evnements courants:............................................................................................................. 20
Associer une fonction un vnement................................................................................... 20
Tp............................................................................................................................................ 21

M.El Kadali

Page 3 sur 45

5. Dfinir un nouveau vnement............................................................................................... 21


e. Objets delegate.................................................................................................................... 21
f. Dlgu pour l'vnement................................................................................................... 22
X. Conversions de variables...................................................................................................... 23
XI. Instanciation et personnalisation des contrles :..................................................................24
1. Instanciation et personnalisation............................................................................................. 24
2. Positionner un contrle............................................................................................................ 24
3. Ajout au formulaire.................................................................................................................. 24
XII. Fonctions utiles sur les chaines de caractres......................................................................24
XIII.Les fichiers........................................................................................................................... 27
4. Les fichiers binaires................................................................................................................. 27
a. Ecrire des donnes binaires en utilisant les Streams...........................................................27
b. Lire des donnes binaires en utilisant les Streams...............................................................28
c. Exemple complet.................................................................................................................. 28
5. Les fichiers textes.................................................................................................................... 29
a. Ecriture dans le fichier.......................................................................................................... 29
b. Lecture dans le fichier.......................................................................................................... 29
XIV.Autres................................................................................................................................... 29

Mettre en uvre des actions sur les vnements les plus courants : Slection, Click, Evnements de
clavier, copier (couper) dposer

Utilisation des contrles avancs (date, calendrier) et contrles de mise en forme de texte (RTF)

Utilisation des botes de dialogue : ouverture de fichier, sauvegarde, impression, aperu, couleur et type
de policeparcours de dossiers

M.El Kadali

II.

Page 4 sur 45

Les dclarations
1. Les types

Les valeurs sont stockes dans des variables. Avant dutiliser une variable il faut la dclarer.
Chaque variable a un type.

Dclarer une variable b entire :

int b;
Dclarer deux variables a et b entire :

int a;
int b = 5;
Ou :
int a,b;
b = 5 ;
Dclarer une variable de type char :

char c = 'r';

Page 5 sur 45

M.El Kadali

2. Porte dune variable

a. Les variables globales


La porte dun identificateur correspond aux parties du programme ou cet identificateur peut
tre utilis sans provoquer derreur la compilation.
La porte dune variable globale ou dune fonction globale est gale au programme.
La porte dune variable locale va de sa dfinition jusqu la fin de la premire instruction
compose ({...}) qui contient sa dfinition.
Deux variables peuvent avoir le mme nom mais dans ce cas, elles doivent avoir deux portes
diffrentes.
Exemple 1 :

{
int i = 5;
MessageBox.Show(i.ToString()); // affiche 5
}
MessageBox.Show(i.ToString());

// erreur

Erreur : dans la dernire ligne, lutilisation de la variable i est fausse car la variable i ne peut
tre utilise quentre les accolades {}.
Exemple 2 : correct

{
int i = 5;
MessageBox.Show(i.ToString()); // affiche 5
}
{
int i = 3;
MessageBox.Show(i.ToString()); // affiche 5
}

b. Variables globales un formulaire


Pour quune variable soit connue au niveau de tout le formulaire, il faut la dclarer en dehors
de toute fonction comme suit :

public partial class Form1 : Form


{
public int var_global = 5 ;

c. Variables globales au projet


Une variable globale au projet est une variable quon peut utiliser dans tous les lments du
projet (dans tous les formulaires par exemple).
Une faon pour travailler avec des variables globales est de rajouter une classe statique.
Exemple dune classe statique contenant des variables utilisation globale :

public static class GlobalVar

M.El Kadali

Page 6 sur 45

{
public static String[,] stag = new String[100, 5];
public static int indice = 0;
}

Cette classe contient 2 variables : stag et indice.


On peut accder la variable indice (par exemple) comme suit :

GlobalVar.indice = 5;

III.

Instruction alternative
3. Syntaxe :

if (condition)
{
instruction;
instruction;
instruction;

}
else
{
instruction;
instruction;
le bloc else nest pas obligatoire
instruction;

}
S'il n'y a qu'une instruction, les { } ne sont pas obligatoires.
Les parenthses autour de la condition sont obligatoires.

Exemple 1 : quelle la valeur de la variable a la fin de ce programme?

int a;
a = 1;
if (a == 1)
{
a = 3;
}
else
{
a = 5;
}

On peut lcrire galement de la faon suivante :

int a;
a = 1;
if (a == 1)
a = 3;
else
a = 5;

M.El Kadali
Exemple 2 :quelle la valeur de la variable a la fin de ce programme ?

int a;
a = 1;
if (a == 1)
{
a = 3;
}

4. Imbrication dinstructions alternatives


if (condition1)
{
if (condition2)
instruction;
else
instruction;
}
else
{
instruction;
}
Le else se rapporte la seconde branche du if.

IV.

Structure rptitive

1 Nombre de rptitions connu

d. Structure for
Soit la structure algorithmique pour :
pour i allant de a b avec un pas de p faire

instruction;
instruction;
finpour
La syntaxe de cette structure en C# :

for (i=a ; i<=b ; i=i+p){


instruction;
instruction;
.
.
}
Notes

Page 7 sur 45

M.El Kadali

Page 8 sur 45

les 3 arguments du for sont l'intrieur d'une parenthse et spars par des
points-virgules.
chaque action du for est termine par un point-virgule.
l'accolade n'est ncessaire que s'il y a plus d'une action.
l'accolade n'est pas suivie de point-virgule.

Exemple :
int i;
for (i=0 ; i<=5 ; i=i+1){
MessageBox.Show("Bonjour :" + i);
}

e. Structure foreach
La syntaxe est la suivante :
foreach (Type variable in collection)
{
instructions;
.
.
.
}

Notes

collection est une collection d'objets numrable. La collection d'objets


numrable que nous connaissons dj est le tableau
Type est le type des objets de la collection. Pour un tableau, ce serait le type des
lments du tableau
variable est une variable locale la boucle qui va prendre successivement pour
valeur, toutes les valeurs de la collection.

Ainsi le code suivant :


string[] amis = { "paul", "hlne", "jacques", "sylvie" };
foreach (string nom in amis) {
MessageBox.Show (nom);
}

Afficherait :
paul
hlne
jacques
sylvie

Page 9 sur 45

M.El Kadali

5. Nombre de rptitions inconnu

a Structure tant que (while)


while(condition){
actions;
}

La boucle se rpte tant que la condition est vrifie. La boucle


peut ne jamais tre excute.
l'accolade n'est ncessaire que s'il y a plus d'une action.
Exemple :
Remarque :

int a =9 ;
while(a > 10){
MessageBox.Show("Bonjour
a = a -1 ;//a=9

" );

f. Structure repeter jusqu'a (do while)

La syntaxe est la suivante :


do{
instructions;
}while(condition);

On boucle jusqu' ce que la condition devienne fausse. Ici la


boucle est faite au moins une fois.
int a = 9 ;
do{

MessageBox.Show("Bonjour
a = a -1 ;// a =8
} while(a>10)

" );

Page 10 sur 45

M.El Kadali

V.

Structure de cas

La syntaxe est la suivante :


switch(expression) {
case v1:
actions1;
break;
case v2:
actions2;
break;
. .. .. .. .. ..
default:
actions_sinon;
break;
}

la valeur de l'expression de contrle du switch peut tre un entier, un caractre, une chane de
caractres
l'expression de contrle est entoure de parenthses.
la clause default peut tre absente.
les valeurs vi sont des valeurs possibles de l'expression. Si l'expression a pour valeur vi , les actions
derrire la clause case vi sont excutes.
l'instruction break fait sortir de la structure de cas.
chaque bloc d'instructions li une valeur vi doit se terminer par une instruction de branchement
(break, goto, return, ...) sinon le compilateur signale une erreur.
Exemple :
int choix = 2;
string ch = "0";
bool erreur = false;
switch (choix) {
case 1:
ch = "1";
break;
case 2:
ch = "2";
break;
case 3:
ch = "3";
break;
default:
erreur = true;
break;
}
=>

M.El Kadali

VI.

Page 11 sur 45

Les tableaux
1 Tableau unidimensionnel

Les tableaux C# sont indexs partir de zro ; autrement dit, leur premier lment porte l'index zro. En C#,
les tableaux fonctionnent de la mme faon que dans la plupart des autres langages courants. Il existe
cependant quelques diffrences dont vous devez tenir compte.
Lorsque vous dclarez un tableau, les crochets ([]) doivent suivre le type, et non l'identificateur. La prsence
de crochets aprs l'identificateur ne correspond pas une syntaxe conforme en C#.
int[] table; // non int table[];

Exemple 1 :

int[] numbers; // declare numbers as an int array of any size


numbers = new int[10]; // numbers is a 10-element array
numbers = new int[20]; // now it's a 20-element array
numbers[0] = 14;
numbers[2] = 8;
numbers[3] = 17;
numbers[5] = 4;
numbers[9] = 9;
numbers[10] = 6; //erreur

Exemple 2 :

Exemple3 :

char[] chr;
chr = new char[5];
chr[0] = 'a';
chr[1] = 'b';
string[] table = new string[5];
table[0] = "une phrase";
table[1] = "une autre phrase";

Exemple 4 :

int[] n = new int[] {1,3,5,7,9} ;


int[] m = {1,3,5,7,9} ;

TP 1 : enregistrer les nombres saisis par lutilisateur.

M.El Kadali

Page 12 sur 45

Correction : dans le dossier tableaux tp1


TP 2 : enregistrer les noms et prnoms.
Correction : dans le dossier tableaux tp2

6. Tableau multidimensionnel
string[,] names = new string[5,4];
int[,] nb ;
nb = new int[5,7] ;

int[,,] buttons = new int[4,5,3];

7. Tableau de tableaux
int[][] ta = new int[3][];
ta [0] = new int[5];
ta [1] = new int[4];
ta [2] = new int[2];
ta[0][1] = 77;

TP 1 : refaire le dernier tp avec un seul tableau.


Correction : tableaux tp 3 tableau multidimensionnel
Rvision : (les boucles, les tableaux, listBox):
Ajouter le bouton Supprimer au TP prcdant.
Correction : tableaux tp 4 revision

VII.

Les formulaires
1 Oprations courantes

Afficher un formulaire form2 partir dun autre formulaire form1 (non modal : on accde
quand mme lautre) :

M.El Kadali

Page 13 sur 45

Form2 frm = new Form2();


frm.Show();
Lafficher sous forme dune boite de dialogue modale :

frm.ShowDialog();
Fermer une fentre :

frm.Close() ;
Cacher une fentre :

Frm.Hide() ;
Dans form2 on rajoute la fonction :

public string ma_valeur()


{
return n1.Text;
}
rcuprer une donne(ma valeur() ) dans Form 1 :

Form2 frm = new Form2();


frm.ShowDialog();
res.Text = frm.ma_valeur();
TP 1 :
Afficher une valeur saisie dans un formulaire enfant.

8. Les applications MDI et SDI


Les applications d'interface multi documents (MDI) vous permettent d'afficher simultanment plusieurs
documents, chacun dans une fentre diffrente. Les applications MDI comportent souvent un lment de menu
Fentre contenant des sous-menus qui permettent de passer d'une fentre ou d'un document un autre.
Dans la fentre Proprits, affectez la proprit IsMDIContainer la valeur true.
Ce faisant, vous dsignez le formulaire comme le conteneur MDI des fentres enfants.
partir de la bote outils, faites glisser un contrle Menustrip sur le formulaire.
Ajouter une nouvelle fentre : Form2
Ajouter ce code lun des lments du menu de la fentre parent :
private void aaToolStripMenuItem_Click(object sender, EventArgs e)
{

Page 14 sur 45

M.El Kadali

Form2 newMDIChild = new Form2();


// Set the Parent Form of the Child window.
newMDIChild.MdiParent = this;
// Display the new form.
newMDIChild.Show();

Rsultat :

2 Contrles et
bote de

composants de
dialogue

Les botes de dialogue


permettent d'interagir
avec l'utilisateur et de
rcuprer des
informations. En termes
simples, une bote de
dialogue est un formulaire
dont la proprit
d'numration
FormBorderStyle a la
valeur FixedDialog.
Une fois qu'une bote de
dialogue est ferme, le
formulaire qui l'affichait peut rcuprer le rsultat de celle-ci en rfrenant sa proprit DialogResult ou la
valeur de retour d'un appel la mthode ShowDialog.
Pour afficher une bote de dialogue

Form2 frm = new Form2();


frm.ShowDialog();

a La proprit DialogueResult
Vous pouvez produire vous propre boite de dialogue.Utilser poir cela La proprit
DialogueResult des boutons.

M.El Kadali

Page 15 sur 45

Utiliser la proprit DialogueResult des 2 boutons (voir image) :


Le code:

Form3 frm = new Form3();


if (frm.ShowDialog() == DialogResult.OK)
MessageBox.Show("ok");
else
MessageBox.Show("annuler");

g. OpenFileDialog
L'utilisation de ce composant dans votre application Windows plutt que de configurer votre
propre bote de dialogue vous offre un moyen simple de slectionner des fichiers.

//ouvrir la boite de dialogue


OpenFileDialog df = new OpenFileDialog();
df.ShowDialog();
//obtenir seulement le nom du fichier slectionn
textBox1.Text = df.SafeFileName;
//obtenir le chemin du fichier slectionn
textBox2.Text = df.FileName;

Exemple :

OpenFileDialog fd = new OpenFileDialog();


// on paramtre la bote de dialogue savefileDialog1
fd.InitialDirectory = @"C:\Users\Malika\Desktop\supprimer";

M.El Kadali

Page 16 sur 45

fd.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*";


// on affiche la bote de dialogue et on rcupre son rsultat
if (fd.ShowDialog() == DialogResult.OK)
{
// on rcupre le chemin du fichier
string nomFichier = fd.FileName;
try
{
char[] buffer = new char[3];
// on ouvre le fichier en criture
StreamReader fichier = new StreamReader(nomFichier);
// on lit le texte dedans
fichier.Read(buffer, 0, 3);
fichier.Close();
textBox1.Text = buffer[0].ToString() + buffer[1].ToString() + buffer[2].ToString();
}
catch (Exception)
{ // problme
MessageBox.Show("Problme lecture du fichier");
}
}

h. SaveFileDialog
Ce contrle affiche une boite de dialogue qui demande lutilisateur de slectionner un
emplacement pour lenregistrement dun fichier.

M.El Kadali

Page 17 sur 45

Exemple :

SaveFileDialog sv = new SaveFileDialog();


// on paramtre la bote de dialogue savefileDialog1
sv.InitialDirectory = @"C:\Users\Malika\Desktop\supprimer";
sv.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*";
// on affiche la bote de dialogue et on rcupre son rsultat
if (sv.ShowDialog() == DialogResult.OK)
{
// on rcupre le nom du fichier
string nomFichier = sv.FileName;
try
{
// on ouvre le fichier en criture
StreamWriter fichier = new StreamWriter(nomFichier, false);
// on crit le texte dedans
fichier.Write(textBox1.Text);
fichier.Close();
}
catch (Exception ex)
{ // problme
MessageBox.Show("Problme l'criture du fichier (" +
ex.Message + ")", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

M.El Kadali

i. ColorDialog
ColorDialog clr = new ColorDialog();
if (clr.ShowDialog() == DialogResult.OK)
{
textBox1.BackColor = clr.Color;
}
j. FontDialog
FontDialog police = new FontDialog();
if (police.ShowDialog() == DialogResult.OK)
{
textBox1.Font = police.Font;
}
k. PrintDialog

VIII.

Boite outils
1 form

Page 18 sur 45

M.El Kadali

Page 19 sur 45

2 ListBox
Proprit SelectionMode :

One : un seul lment peut tre slectionn


MultiExtended : multi-slection possible. Maintenir appuye la touche SHIFT et cliquer sur un
lment tend la slection de l'lment prcdemment slectionn l'lment courant.
MultiSimple : multi-slection possible : un lment est slectionn / dslectionn par un clic
de souris ou par appui sur la barre d'espace.

//vider le listbox
listBox1.Items.Clear();
//ajouter un nouvel element au mistbox
listBox1.Items.Add("nouveau element");
//obtenir l index slectinn
int index = listBox1.SelectedIndex;
//ajouter l'lment selectionn
listBox2.Items.Add(listBox1.Items[index]);
//supprimer un lment
listBox1.Items.RemoveAt(index);
//nombre dlements selectionns du listbox
Int nb = ListBox1.SelectedIndices.Count ;
//nombre dlements du listebox
Int nb = ListBox1.Items.Count ;
//Obtenir llements dindexe 5
String s = listBox1.Items[5].ToString();

9. Checkbox

if (checkBox1.Checked)
MessageBox.Show("vert");
else
MessageBox.Show("blanc");

10.

Radiobutton

Des boutons radio prsents dans un mme conteneur, ici le GroupBox, sont exclusifs l'un de l'autre :
seul l'un d'entre eux est coch.

M.El Kadali

Page 20 sur 45

if ( radioButton1.Checked )
MessageBox.Show("radio1");
else
MessageBox.Show("radio2");

11.

ComboBox

Un composant ComboBox est une liste droulante double d'une zone de saisie : l'utilisateur
peut soit choisir un lment dans (2) soit taper du texte dans (1). Il existe trois sortes de
ComboBox fixes par la proprit DropDownStyle :
Simple liste non droulante avec zone d'dition
DropDown liste droulante avec zone d'dition
DropDownList liste droulante sans zone d'dition
Soit C un combo et C.Items sa liste d'lments. On a les proprits suivantes :

C.Items.Count
//nombre d'lments du combo
C.Items[i]
//lment i du combo
C.Add(object o)
//ajoute l'objet o en dernier lment du combo
C.AddRange(object[] objets) // ajoute un tableau d'objets en fin de combo
C.Insert(int i, object o) //ajoute l'objet o en position i du combo
C.RemoveAt(int i)
//enlve l'lment i du combo
C.Remove(object o)
//enlve l'objet o du combo
C.Clear()
//supprime tous les lments du combo
C.IndexOf(object o)
//rend la position i de l'objet o dans le combo
C.SelectedIndex
//index de l'lment slectionn
C.SelectedItem
//lment slectionn
C.SelectedItem.Tostring()
//texte affich de l'lment slectionn
C.Text
//texte affich de l'lment slectionn

M.El Kadali

12.

Page 21 sur 45

ListView

Ajouter un lment au ListView :

ListViewItem itm = new ListViewItem("Kassimi");


itm.SubItems.Add("Iman");
listView1.Items.Add(itm);

Proprits importante :

Evnements important :

// le mme que SelectedIndexChanged

M.El Kadali

13.

Page 22 sur 45

PictureBox

Pour ajouter une image.

14.

dataGridView

Le contrle DataGridView offre un moyen puissant et flexible d'afficher des donnes sous
forme de tableau.
Pour ajouter une ligne dans le datagridview :

dataGridView1.Rows.Add("Soufi","Safa");

15.

TreeView

Le contrle TreeView permet d'afficher une collection de donnes hirarchique (ou imbrique,
ou rcursive) dans un arbre prsentant des nuds extensibles.
Rajouter un nud au dbut :

treeView1.Nodes.Add("nouveau noeud");
Rajouter un nud fils du nud n1 :

TreeNode[] a = treeView1.Nodes.Find("n1", true);


a[0].Nodes.Add("new");

16.

Timer

Timer timer11 = new Timer();


//ma_fonction est la fonction qui va se rpeter
// Everytime timer ticks, timer_Tick will be called
timer11.Tick += new EventHandler(ma_fonction);
// Intervalle, en milliseconde

M.El Kadali

Page 23 sur 45

timer11.Interval = 1000;
// Enable the timer
timer11.Enabled = true;
// Start the timer
timer11.Start();

17.

ProgressBar

Indique la progression d'une opration.


MessageBox.Show( Convert.ToString(progressBar1.Maximum));
//dfinit la position actuelle de la barre de progression
progressBar1.Value = 10;
//la barre avance de 10
progressBar1.Increment(10);

18.

StatusStrip

Reprsente un contrle de barre d'tat Windows.


au moment du design pour le contrle StatusStrip , Les lments suivants sont disponible en
ajout au contrle StatusStrip (entre autres):
ToolStripStatusLabel
ToolStripProgressBar

19.

PictureBox

Sert contenir une image.

20.

dateTimePicker

Sert slectionner une date.

// afficher le texte du controle


MessageBox.Show("le text du controle : "+ dateTimePicker1.Text);
DateTime d1 = dateTimePicker1.Value;
MessageBox.Show(" la date et l'heure : " + d1.ToString());
MessageBox.Show(" la date : " + d1.Date.ToString());
MessageBox.Show(" la date : " + d1.ToShortDateString());
MessageBox.Show(" l'heure : " + d1.TimeOfDay );
DateTime d2 = d1.AddDays(5); //rajoute 5 jours la date dte et l'affecte dt2
d2 = d2.AddMonths(4);//rajoute 4 mois la date dte
d2 = d2.AddYears(3);//rajoute 3 ans la date dte
dateTimePicker1.Value = d2;
d2 = d1.AddHours(6);//rajoute 6 heures la date dte
int jour = d1.Day;//obtient le composant jour de la date dte
int mois = d1.Month;//obtient le composant mois de la date dte
int annee = d1.Year;//obtient le composant anne de la date dte
MessageBox.Show("le jour est :" + jour.ToString());
MessageBox.Show("le mois est :" + mois.ToString());
MessageBox.Show("l'anne est :" + annee.ToString());

M.El Kadali

21.

Page 24 sur 45

Les conteneurs

l. FlowLayoutPanel
Le contrle FlowLayoutPanel rorganise son contenu dans un sens de droulement horizontal
ou vertical. Vous pouvez spcifier le sens du droulement en dfinissant la valeur de la
proprit FlowDirection.

m. groupBox
Reprsente un contrle Windows qui affiche un frame autour d'un groupe de contrles avec une lgende
facultative.

n. Panel
Les contrles Panel Windows Forms permettent de regrouper d'autres contrles. Il existe trois raisons de
regrouper des contrles. Regroupement visuel d'lments connexes en vue de fournir une interface plus claire
l'utilisateur ; regroupement de programmation, des cases d'option par exemple ; enfin, au moment du design,
dplacement de plusieurs contrles comme une mme entit.

o. TabControl
Gre et affiche un ensemble donglets contenant des controles et des composants.

22.

Les menus

p. MenuStrip
Pour crer un menu principal, on choisit le composant "MenuStrip".

q. ContextMenuStrip
Dfinit un menu contextuel.

Rsultat lors de lexcution :

M.El Kadali

23.

Page 25 sur 45

Instanciation et personnalisation dynamique des contrles :

a Instanciation dun contrle


Button b1 = new Button();
TextBox t1 = new TextBox();
CheckBox chk = new CheckBox();
Control cnt = new Control ();
RadioButton rd = new RadioButton();

r. Personnalisation dun contrle


Exemple 1 :

Exemple 2 :

Exemple 3 :

Button b1 = new Button();


b1.Text = "Calculer";
b1.BackColor = Color.Beige;
TextBox t1 = new TextBox();
t1.Text = "Nom";
t1.TabIndex = 4;
t1.TextAlign = HorizontalAlignment.Left
TextBox t1 = new TextBox();
t1.Text = "Nom";
t1.Width = 400;
t1.Height = 200;

s. Positionnement un contrle
Button b1 = new Button();
b1.Text = "Calculer";
b1.BackColor = Color.Beige;
Point pt = new Point(200, 22);
b1.Location = pt;

t. Ajout dun contrle au formulaire


Exemple 1 :
CheckBox chk = new CheckBox();
chk.Text = "vert ";
this.Controls.Add(chk);

M.El Kadali

Page 26 sur 45

Exemple 2 : (ajout un Groupbox)


RadioButton rd = new RadioButton();
rd.Text = "bleu";
groupBox1.Controls.Add(rd);

IX.

Les vnements

1 Dfinition
Un vnement est un message transmis par un objet pour signaler l'occurrence d'une action. L'action peut
tre provoque par une interaction utilisateur, telle qu'un clic de souris, ou peut tre dclenche par une autre
logique de programme. L'objet qui dclenche l'vnement est appel metteur d'vnement. L'objet qui
capture l'vnement et y rpond est appel rcepteur d'vnements.

24.

Evnements courants:
la souris vient d'entrer dans le domaine du contrle
la souris vient de quitter le domaine du contrle
: la souris bouge dans le domaine du contrle
: Pression sur le bouton gauche de la souris
: Relchement du bouton gauche de la souris
: Se produit lors du clique sur le bouton.

MouseEnter :
MouseLeave :
MouseMove
MouseDown
MouseUp

Click
Load
Enter

: Se produit lors du chargement du formulaire.


: Se produit lorsque le contrle devient le contrle actif du formulaire.

TextChanged : se produit lorsque la valeur Text du contrle est modifie.


Validated : se produit aprs la validation russie dun contrle.
Validating : se produit lors de la validation du contrle.
Evnments du clavier
KeyDown : se produit lorsquune touche est enfonce pour la premiere fois.
KeyPress : se produit lorsque le contrle a le focus et que lutilisateur appuie sur une touche et
la relache.
KeyUp : se produit lorsquune touche est relache.

M.El Kadali

25.

Page 27 sur 45

Associer une fonction un vnement

Quand vous cliquez sur un bouton, Windows doit informer votre programme quun clic a t dtect.
Pour cela,
Windows appelle une fonction de votre programme. Une telle fonction sappelle fonction de
traitement de lvnement clic (event handler, ou plus simplement handler en anglais) .Cette
fonction doit avoir la signature suivante :
void xyz(object sender, EventArgs e);

Pour dclencher une fonction suite un vnment :


private void button1t_Click(object sender, EventArgs e)
{
...
}
...
button1.Click += new System.EventHandler(button1_Click);

26.

Tp

1. Obliger lutilisateur ne saisir que des nombres:


Premire faon ;

private void capital_KeyPress(object sender, KeyPressEventArgs e)


{
int a = e.KeyChar;
if ((a < 49) || (a > 57))
{
e.Handled = true;
}
}
Deuxime faon ;
private void capital_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsDigit (e.KeyChar))
e.Handled = true;
}
2. Obliger lutilisateur ne saisir que des lettres:

private void capital_KeyPress(object sender, KeyPressEventArgs e)


{
int a = e.KeyChar;
if ((a < 97) || (a > 122))//letter miniscule
{
e.Handled = true;

M.El Kadali

Page 28 sur 45

}
}
Deuxime faon ;
private void capital_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsLetter(e.KeyChar))
e.Handled = true;
}
3. Afficher un message au chargement du formulaire
4. Afficher un message la fermeture du formulaire
5. Lors du clique sur un radiobox, le formulaire prend la couleur choisie.
6.

27.

Dfinir un nouveau vnement

Ici, le but est de crer des vnements qui vont tre propres votre application.

u. Objets delegate
Un dlgu (delegate en anglais) est un objet (en fait, de la classe Delegate ou dune classe drive
de celle-ci, mais peu importe) qui permet dappeler une fonction, qui nest pas ncessairement
toujours la mme. Il peut mme sagir dun appel une srie de fonctions.
Prenons un exemple simple, que nous commenterons ensuite :
void f()
{
MessageBox.Show("Fonction f");
}
void g()
{
MessageBox.Show("Fonction g");
}
// ceci est une dfinition de type : T est un type
delegate void T();
private void button1_Click(object sender, EventArgs e)
{
T de = new T(f); // dclaration d'une variable. "de" fait rfrence
f
de(); // excute f
de = new T(g); //" de" fait maintenant rfrence g
de(); // excute g
}
T dsigne un type dobjet (au mme titre que int, double) et non une dclaration de variable, une
signature de fonction, ou quoi que ce soit dautre, comme un coup doeil rapide pourrait le faire
croire.

M.El Kadali

Page 29 sur 45

Un dlgu peut faire rfrence plusieurs fonctions, et ainsi les excuter les unes la suite des
autres (on parle alors de multicasting delegate). tout moment, il est en effet possible dajouter, ou
de retirer, des fonctions la liste des fonctions rfrences par un dlgu. Par exemple :

// de contient une rfrence f


de = new T(f);
// de contient une rfrence f et une autre g
de += new T(g);
// excution de f et puis de g
de();
// de ne contient plus quune rfrence g
de -= new T(f);
// excution de g
de();
// de ne contient plus aucune rfrence de fonction
de -= new T(g);
if (de != null)
de();
else
MessageBox.Show("Aucune fonction excuter");

Notre variable de prend finalement la valeur null quand plus aucune fonction ne lui est lie.

v. Dlgu pour l'vnement


Un dlgu d'vnement est utilis pour dfinir la signature de l'vnement. Par convention, dans
le .NET Framework, les vnements ont la signature EventName(sender, e), o sender est un Object qui fournit
une rfrence la classe ou la structure qui a dclench l'vnement, et e est un objet EventArgs ou un objet
driv de EventArgs qui fournit les donnes d'vnement. Gnralement, la dfinition de dlgu prend alors
la forme EventNameHandler(sender, e).
L'exemple suivant dfinit un dlgu d'vnement nomm AlarmEventHandler.

Public Delegate Sub AlarmEventHandler(sender As Object, e As AlarmEventArgs)


La syntaxe est similaire celle d'une dclaration de mthode ; le mot cl delegate informe toutefois le
compilateur qu'AlarmEventHandler est un type dlgu. Par convention, les dlgus d'vnement figurant
dans le .NET Framework possdent deux paramtres, la source qui a dclench l'vnement et les donnes de
l'vnement.

Premire faon :
Dans le formulaire parent :

Form2 a = new Form2();


a.ShowDialog();
textBox1.Text = a.chaine1;
//libre les ressouces utilis pour le fomulaire a
a.Dispose();

Dans le formulaire enfant :

//la variable chaine est une variable globale au formulaire


courant (public string chaine1;)

M.El Kadali

Page 30 sur 45

chaine1 = textBox1.Text;
// Fermeture du formulaire
this.Close();

Deuxime faon (Owner):


Dans le formulaire parent :

public string chaine1;


private void button1_Click_1(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Owner = this;
f2.ShowDialog();
MessageBox.Show(chaine1);
}
Dans le formulaire enfant :

// On passe le contenu des TextBox au formulaire parent


Form1 f1 = (Form1)this.Owner; // f1 est le parent
f1.chaine1 = textBox1.Text;
this.Close();

Troisime faon:

X.

Conversions de variables
int n = Convert.ToInt16("14");

Si la conversion russi n prend la valeur 14 sinon une erreur se produit.

string ch1 = "15,5"; ;


float f;
Boolean bl = float.TryParse(ch1, out f);

Si la conversion russi la variable Bl prends la valeur true sinon la valeur false.


Convertir en chaine de caractre presque nimporte quel variable :

int n = 14;
string chaine = n.ToString();
int a = int.parse(5.5);

XI.

Instanciation et personnalisation des contrles :


1 Instanciation et personnalisation

Exemple 1 :
Button b1 = new Button();
b1.Text = "Calculer";
b1.BackColor = Color.Beige;
Exemple 2 :
TextBox t1 = new TextBox();

M.El Kadali

t1.Text = "Nom";
t1.TabIndex = 4;
t1.TextAlign = HorizontalAlignment.Left
Exemple 3 :
TextBox t1 = new TextBox();
t1.Text = "Nom";
t1.Width = 400;
t1.Height = 200;

28.

Positionner un contrle
Button b1 = new Button();
b1.Text = "Calculer";
b1.BackColor = Color.Beige;
Point pt = new Point(200, 22);
b1.Location = pt;

29.

Ajout au formulaire

Exemple 1 :
CheckBox chk = new CheckBox();
chk.Text = "vert ";
this.Controls.Add(chk);
Exemple 2 : (ajout un Groupbox)
RadioButton rd = new RadioButton();
rd.Text = "bleu";
groupBox1.Controls.Add(rd);

XII.

Fonctions utiles sur les chaines de caractres


#region Concat
string a = "Zakaria";
string b = string.Concat(a, " Abdellah");
//Console.WriteLine(b);
#endregion
#region insert
string abc = "abcdefgh";
string j = abc.Insert(4, "0");

Page 31 sur 45

Page 32 sur 45

M.El Kadali

//Console.WriteLine(j);
#endregion
#region Remove
string str = "azert";
//Console.WriteLine(str.Remove(2));
#endregion
#region Replace
string rep = "El kadiri abdellah";
string newRep = rep.Replace("ka", "KA");
//Console.WriteLine(newRep);
#endregion
#region Trim
string tr = "

class tdi

";

//Console.WriteLine("----Trim----");
//Console.Write("*");
//Console.Write(tr.Trim());
//Console.WriteLine("*");
//Console.WriteLine("----TrimStart----");
//Console.Write("*");
//Console.Write(tr.TrimStart());
//Console.WriteLine("*");
//Console.WriteLine("----TrimEnd----");
//Console.Write("*");
//Console.Write(tr.TrimEnd());
//Console.WriteLine("*");
#endregion
#region Upper & Lower
string name = "AbdEllah";
//Console.WriteLine(name.ToUpper());
//Console.WriteLine(name.ToLower());
#endregion
#region SubString
string str2 = "abcdefghj";

M.El Kadali

Page 33 sur 45

string str3 = str2.Substring(3, 4); //defg


//Console.WriteLine(str3);
#endregion
#region Format
string formatstring = string.Format(" {0} + {1} = {2}", 1, 5,
6);
//Console.WriteLine(formatstring);
#endregion
#region Split
string words = "microsoft visual studio csharp";
string[] word = words.Split(' ');
//Console.WriteLine(word.Count().ToString()); //4
foreach (string item in word)
{
//Console.WriteLine(item);
}
#endregion

class Program {
static void Main(string[] args) {
string uneChaine = "l'oiseau vole au-dessus des nuages";
affiche("uneChaine=" + uneChaine);
affiche("uneChaine.Length=" + uneChaine.Length);
affiche("chaine[10]=" + uneChaine[10]);
affiche("uneChaine.IndexOf(\"vole\")=" + uneChaine.IndexOf("vole"));
affiche("uneChaine.IndexOf(\"x\")=" + uneChaine.IndexOf("x"));
affiche("uneChaine.LastIndexOf('a')=" + uneChaine.LastIndexOf('a'));
affiche("uneChaine.LastIndexOf('x')=" + uneChaine.LastIndexOf('x'));
affiche("uneChaine.Substring(4,7)=" + uneChaine.Substring(4, 7));
affiche("uneChaine.ToUpper()=" + uneChaine.ToUpper());
affiche("uneChaine.ToLower()=" + uneChaine.ToLower());
affiche("uneChaine.Replace('a','A')=" + uneChaine.Replace('a', 'A'));
string[] champs = uneChaine.Split(null);
for (int i = 0; i < champs.Length; i++) {
affiche("champs[" + i + "]=[" + champs[i] + "]");
}//for
affiche("Join(\":\",champs)=" + System.String.Join(":", champs));
affiche("(\" abc \").Trim()=[" + " abc ".Trim() + "]");
}//Main
public static void affiche(string msg) {
// affiche msg
Console.WriteLine(msg);
}//affiche

M.El Kadali

XIII.

Page 34 sur 45

Les fichiers

The .NET Framework enables you to use streams. A stream is a sequence of bytes,
which could come from a file on the file system, a network connection, or memory.
Streams enable you to read from or write to a data source in small, manageable data
packets.
The .NET Framework provides several stream classes that enable you to work with a
variety of data and data sources. When choosing which stream classes to use, you
need to consider the following:

What type of data you are reading or writing, for example, binary or
alphanumeric.
Where the data is stored, for example, on the local file system, in memory, or on
a web server over a network.

The .NET Framework class library provides several classes in the System.IO namespace
that you can use to read and write files by using streams.
The .NET Framework provides many stream classes that you can use to read and write
different types of data from different types of data sources. The following table
describes some of these stream classes, and when you might want to use them.

30.

Les fichiers binaires

a Ecrire des donnes binaires en utilisant les Streams

M.El Kadali

Page 35 sur 45

string filePath = @"C:\Users\moi\Documents\projets c\test1\test1\MonFichier.txt";


FileStream fichier = new FileStream(filePath, FileMode.Create , FileAccess.Write);
//ecrire du binaire
BinaryWriter wr = new BinaryWriter(fichier);
byte[] donnee = new[] { (byte)5, (byte)6, (byte)'a' };
wr.Write(donnee);
wr.Close();
fichier.Close();

w. Lire des donnes binaires en utilisant les Streams


string chemin = @"C:\Users\Malika\Documents\projets c\test1\test1\MonFichier.txt";
FileStream fichier = new FileStream(
chemin, // Pass in the source file path.
FileMode.Open, // Open an existing file.
FileAccess.Read);// Read an existing file.
// Create a BinaryWriter object passing in the FileStream object.
BinaryReader rd = new BinaryReader(fichier);
byte[] donnee = new byte[10];

//rd.Read() retourne un octet , elle retourne -1 si fin de ficher


donnee[0] = (byte)rd.Read();
MessageBox.Show(donnee[0].ToString());
rd.Close();
fichier.Close();

x. Exemple complet
string chemin = @"C:\Users\Malika\Documents\projets c\test1\test1\MonFichier.txt";

M.El Kadali
FileStream fichier = new FileStream(
chemin, // le chemin du fichier.
FileMode.Open, // ouvrir un fihcier existant.
FileAccess.Read);// lire dans le fichier existant.

BinaryReader rd = new BinaryReader(fichier);


// enregistrer le nombre d'octet qu il y a dans notre fichier.
int longueur = (int)rd.BaseStream.Length;
byte[] donnee = new byte[longueur];
int returnedByte;
int position = 0;

while ((returnedByte = rd.Read()) != -1)


{
donnee[position] = (byte)returnedByte;
position++;
}

//voir le contenu que nous avons lu


for(int i=0; i<longueur; i++)
{
MessageBox.Show(donnee[i].ToString());
}
//ne pas oublier de fermer

Page 36 sur 45

M.El Kadali

Page 37 sur 45

rd.Close();
fichier.Close();

31.

Les fichiers textes

a Ecriture dans le fichier texte


string chemin= @"C:\Users\Malika\Desktop\supprimer\ecrit.txt";
FileStream fichier = new FileStream(chemin, FileMode.Create,FileAccess.Write);
StreamWriter wr = new StreamWriter(fichier);
wr.Write(textBox1.Text);
wr.Close();
fichier.Close();

ou bien tout simplement :

string chemin = "ecrit.txt";


//false: si le fichier existe il est remplac
StreamWriter wr = new StreamWriter(chemin, false);
wr.WriteLine("bonjour");
wr.WriteLine("Salut");
wr.WriteLine("Au revoir");
wr.Close();
wr.Dispose();

Page 38 sur 45

M.El Kadali

y. Lecture dans le fichier texte


string chemin= @"C:\Users\Malika\Desktop\supprimer\ecrit.txt";
FileStream fichier = new FileStream(chemin, FileMode.Open,FileAccess.Read);
StreamReader rd = new StreamReader(fichier);
char[] buffer = new char[10];

//rd.Read() retourne un octet , elle retourne -1 si fin de ficher


while (rd.Peek()!= -1)
{
rd.Read(buffer, 0, 10);
//string t= buffer.
MessageBox.Show((new

string(buffer)).ToString());

}
rd.Close();
fichier.Close();

Ou bien tout simplement :


string chemin = "ecrit.txt";
//ouvrir le fichier en mode ecriture
StreamReader rd = new StreamReader(chemin);
char[] buffer = new char[10];

//rd.Read() retourne retourne -1 si fin de ficher


while (rd.Peek() != -1)

M.El Kadali

Page 39 sur 45

{
rd.Read(buffer, 0, 10);
MessageBox.Show((new string(buffer)).ToString());
}
rd.Close();

XIV.

WPF

Lobjectif de WPF est de fournir nos interfaces les avances technologiques inclues dans le
FrameWork .Net. WPF permet dincorporer des documents, des multimdias, des graphique 2D
et 3D, des animations et autres.

1 Les bases
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<!-- mettre ses contrles ici-->
<Label Content="Nom" Height="23" HorizontalAlignment="Left" Margin="66,12,0,0" Name="label1"
VerticalAlignment="Top" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="105,12,0,0" Name="textBox1"
VerticalAlignment="Top" Width="120" />
<Button Content="Valider" Height="25" HorizontalAlignment="Left" Margin="246,10,0,0" Name="button1"
VerticalAlignment="Top" Width="73" />

</Grid>
</Window>

M.El Kadali

32.

Page 40 sur 45

Les conteneurs

z. Le StackPanel
<Grid>
<!-- par dfaut l'orientation est vertical -->
<StackPanel Orientation="Horizontal">
<Button Name="b1" Content="bouton 1" Width="200"></Button>
<Button Name="b2" Content="bouton 2"></Button>
</StackPanel>
</Grid>

aa.Le WrapPanel
<Grid>
<!-- par dfaut l'orientation est horizontal -->
<WrapPanel Orientation="vertical">
<Button Name="b1" Content="bouton 1" Width="200"></Button>
<Button Name="b2" Content="bouton 2"></Button>
</WrapPanel>
</Grid>

ab.Le Container Grid

33.

Impression

M.El Kadali

34.

XV.
using
using
using
using
using

Page 41 sur 45

Multimdia et Impression

Autres
System;
System.Collections.Generic;
System.Windows.Forms;
System.Text;
System.Text.RegularExpressions;

namespace test_cerftif
{
static class Program
{
/// <summary>
/// Point d'entre principal de l'application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
// les conversions
//Implicit Conversion
int a = 4;
long b;
b = a; // Implicit conversion of int to long.you cannot implicitly. convert a long value to an int, because
this conversion risks losing information
//Explicit Conversion
int c;
long d = 5;
c = (int)d; // Explicit conversion of long to int
//Using the System.Convert Class
string possibleInt = "1234";
int count = Convert.ToInt32(possibleInt);
//TryParse Conversion:TryParse method enables you to determine whether the conversion will succeed
before you perform the conversion.
int number = 0;
string numberString = "1234";
if (int.TryParse(numberString, out number))
{
// Conversion succeeded, number now equals 1234.
}
else
{
// Conversion failed, number now equals 0.

M.El Kadali

Page 42 sur 45

}
//Manipulating Strings
//Concatenation by Using the + Operator
string address = "23";
address = address + ", Main Street";
address = address + ", Buffalo";
//Concatenation by Using the StringBuilder Class
StringBuilder address1 = new StringBuilder();
address1.Append("23");
address1.Append(", Main Street");
address1.Append(", Buffalo");
string concatenatedAddress = address1.ToString();

the

//Validating Strings :
//Regular expressions provide a mechanism that enables you to validate input. The .NET Framework
//provides the System.Text.RegularExpressions namespace that includes the Regex class. You can use

//Regex class in your applications to test a string to ensure that it conforms to the constraints of a
regular expression.
//Regex.IsMatch Method see if a string value contains any numerical digits.
var textToTest = "hell0 w0rld";
var regularExpression = "\\d"; // \d expression will match any numeric characters
var result = Regex.IsMatch(textToTest, regularExpression, RegexOptions.None);
if (result)
{
// Text matched expression.
}
string address2 = "23";
bool bl = address2.Contains("ab");
int lg = address2.Length;
string portion = address2.Substring(3, 5); //portion contiendra 5 caractres de adress2 en commancant
par le 3eme caractre
// DateTime
DateTime dt = new DateTime(2014, 3, 25);
string dd = dt.ToString("d");
TimeSpan dif = DateTime.Now.Subtract(dt);
int diffJour = dif.Days;
double annee = diffJour / 365.25;
// ref

//By using the ref keyword, you instruct the CLR to pass a reference to the parameter and
//not just the value of the parameter.
void annuler(ref int nb)
{
nb = 0;// nb retourn gardera la valeur 0
}

M.El Kadali

Page 43 sur 45

//Overloaded Methods
//Overloaded methods have the same name but different parameters
void StopService()
{
}
void StopService(string serviceName)
{
}
//Defining a Method with Optional Parameters
//The following code example shows how to define a method that accepts one mandatory parameter and
//two optional parameters.
void StopService(bool forceStop, string serviceName = null, int serviceId =1)
{
}
// call method example:
var forceStop = true;
StopService(forceStop);
var serviceName = "FourthCoffee.SalesService";
StopService(forceStop, serviceName);
//remarque : When defining a method that accepts optional parameters, you must specify all mandatory
parameters before any optional parameters.
// this examle is Incorrect Optional Parameter Definition
void StopService(string serviceName = null, bool forceStop, int serviceId = 1)
{
}
//Using Named Arguments
StopService(true, serviceID: 1);
// remarque :
// * When using named arguments in conjunction with optional parameters, you can easily omit
parameters.
// * You can mix positional and named arguments. However, you must specify all positional arguments
before any named arguments.
// Methods that Use Output Parameters
//A method can pass a value back to the code that calls it by using a return statement. If you need to
return more than a single value to the calling code, you can use output parameters to return additional data
from the method.
bool IsServiceOnline(string serviceName, out string statusMessage)
{
var isOnline = FourthCoffeeServices.GetStatus(serviceName);
if (isOnline)
{
statusMessage = "Services is currently running.";
}
else
{
statusMessage = "Services is currently stopped.";
}
return isOnline;
}
//Invoking a Method that Accepts an Output Parameter
var statusMessage = string.Empty;
var isServiceOnline = IsServiceOnline("FourthCoffee.SalesService", out statusMessage);

M.El Kadali

Page 44 sur 45

//Exceptions
try
{
// Try block.
}
catch ([catch specification 1])
{
// Catch block 1.
}
catch ([catch specification n])
{
// Catch block n.
}
// example :
try
{
}
catch (NullReferenceException ex)
{
// Catch all NullReferenceException exceptions.
}
catch (Exception ex)
{
// Catch all other exceptions.
}
finally //Some methods may contain critical code that must always be run, even if an unhandled
exception occurs.
{
// Code that always runs.
}
//Throwing Exceptions
//You can create an instance of an exception class in your code and throw the exception to indicate that
an exception has occurred.
var ex = new NullReferenceException("The 'Name' parameter is null.");
throw ex;
//Debugging and Tracing
//The Debug and Trace classes include methods to write format strings to the Output window in Visual
Studio, as well as to any other listeners that you configure.
int number;
Console.WriteLine("Please type a number between 1 and 10, and then press Enter");
string userInput = Console.ReadLine();
Debug.Assert(int.TryParse(userInput, out number),
string.Format("Unable to parse {0} as integer", userInput);
Debug.WriteLine(The current value of userInput is: {0}", userInput);
Debug.WriteLine(The current value of number is: {0}", number);
//Declaring an Enum
Day a = Day.Thursday;
enum jour { lundi, mardi, mercredi, jeudi };
jour favoriteDay = jour.jeudi;
jour un_jour = (jour)1;
//Creating a Struct

M.El Kadali
public struct Coffee
{
public int Strength;
public string Bean;
public string CountryOfOrigin;
// Other methods, fields, properties, and events.
}
//Instantiating a Struct
Coffee coffee1 = new Coffee();
coffee1.Strength = 3;
coffee1.Bean = "Arabica";
coffee1.CountryOfOrigin = "Kenya";
//Creating an Indexer
public struct Menu
{
private string[] beverages;
// This is the indexer.
public string this[int index]
{
get { return this.beverages[index]; }
set { this.beverages[index] = value; }
}
// Enable client code to determine the size of the collection.
public int Length
{ get { return beverages.Length; }
}
}
//Accessing Array Items by Using an Indexer
Menu myMenu = new Menu();
string firstDrink = myMenu[0];
int numberOfChoices = myMenu.Length;
}
}

Page 45 sur 45