Sunteți pe pagina 1din 66

Licence Pro. Rseaux et Tlcommunication Introduction 1.1. Lobjectif de cette formation 1.2. Laxe suivre 1.3.

. Lenvironnement de dveloppement 1.4. Avant VB, la notion fondamentale de lobjet 1.4.1. Les classes et les objets 1.4.2. Proprits (attributs) d un objet 1.4.3. Mthodes 1.4.4. Evnements 1.4.5. La mise en application dans VB.net 1.4.5.1. Fentres et contrles 1.4.5.2. Tout est objet 1.4.5.3. Tout objet a des proprits 1.4.5.4. Les objets peuvent avoir des mthodes 1.4.5.5. Certains objets ont des vnements 1.4.5.6. Interface et implmentation 1.4.5.7. Visibilit 1.4.6. En rsum

Spcialit CMSII

2. Principe et structure des programmes 2.1. Une programmation vnementielle 2.1.1. Principes de la programmation VB 2.1.2. Exemple : le fameux Hello World 2.1.2.1. Que voit l' utilisateur du programme? 2.1.2.2. Que se passe t-il dans le programme? 2.1.2.3. Que doit faire le programmeur pour arriver ce rsultat? 2.1.3. En pratique, ce que fait le programmeur 2.1.3.1. La conception de linterface utilisateur 2.1.3.2. Lcriture du code correspondant aux vnements 2.1.4. Excuter et dboguer le programme 2.1.5. Pour rsumer la programmation vnementielle 2.2. Les instructions 2.3. Les procdures 2.3.1. Les procdures lies aux vnements 2.3.2. Les procdures non-lies 2.3.3. Les procdures Sub et les procdures Function 2.3.4. Les procdures non-lies dans les modules standard 2.3.5. Private / Public 2.4. Les modules 3. Environnement de dveloppement 3.1. Le projet 3.2. Une fentre (Windows Form) 3.3. Les procdures de la fentre 3.4. Ajouter un contrle 3.5. Proprits dun contrle 3.6. Les composants dun projet 3.7. Laide Visual Basic 4. Linterface utilisateur 4.1. Introduction 4.2. Les feuilles 4.3. Les boutons 4.4. Les TextBox 4.5. Les labels 4.6. Les cases cocher 4.7. Les listes Cours Visual Basic.net MONNY Maxime Page 1 sur 66

Licence Pro. Rseaux et Tlcommunication 4.8. Les boites toutes faites 4.9. Regroupement de contrles 4.10. Positions des contrles 4.11. Les menus 4.12. Rendre une interface active 4.13. ToolBar / StatusBar 4.14. Image 5. Langage Visual Basic 5.1. String 5.2. Variables Numriques 5.3. Boolens 5.4. Conversion 5.5. Les tableaux 5.6. Les collections 5.7. Soyons STRICT et EXPLICITE 5.8. Les constantes 5.9. Les oprateurs 5.10. Les structures de contrle 5.10.1. Les structures conditionnelles 5.10.2. Les structures itratives 5.11. Rappel sur les procdures 5.12. Porte des variables 5.13. Rfrences et espaces de noms 5.14. Structure dun dveloppement .NET 5.15. Module de classe

Spcialit CMSII

Cours Visual Basic.net

MONNY Maxime

Page 2 sur 66

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

1. Introduction
1.1. Lobjectif de cette formation
Nous allons apprendre utiliser Visual Basic .NET avec le Framework. Nous tudierons principalement: les applications Windows.

Les applications Windows sont des programmes directement excutables qui utilisent des fentres Windows: des programmes de traitement de texte, d' image, de musique, des jeux, de petits utilitaires, des logiciels mtiers (mdicaux)... Nous laisserons de cot les applications Web (en ASP.net) et les applications console..

1.2. Laxe suivre


Nous tudierons donc comment crer une application Windows et pour cela, nous allons suivre diffrentes tapes : - On tudiera la notion d' objet, d' vnement (section 2), - On tudiera le langage VB.net (section 3), - On utilisera les objets ' fentre'et les ' divers contrles'pour crer l' interface utilisateur (section 3), - On dcouvrira la manire de crer une application (section 4), - On apprendra crer une classe (section 5), - Enfin, on verra comment faire le lien avec les bases de donnes (section 6) avec quelques rappels sur les requtes SQL

1.3. Lenvironnement de dveloppement


La faon la plus courante de dveloppement en VB.net est dutiliser Microsoft Visual Studio .net, il contient une interface de dveloppement (programme permettant d' crire un logiciel et de crer un programme excutable) VB.net, C#.Net, Il existe diffrentes versions : initiation, professionnelle, entreprise et architecte. La version initiation (avec MSDN Library MicroSoft Developpement Network Library) est amplement suffisante pour cette formation ainsi que dans le milieu professionnel. Cette mme version servira par la suite, pour la formation

ASP.net

Une version dvaluation de ce produit est disponible sur le site de Microsoft. Concernant la configuration matrielle, un systme professionnel (Windows 2000 pro ou Windows XP Pro) et un minimum de 256 de mmoire vive sont vivement conseill. Cours Visual Basic.net MONNY Maxime Page 3 sur 66

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Enfin, le confort dun grand cran vous semblera indispensable quand vous vous confrontez au grand nombre de fentres.

1.4. Avant VB, la notion fondamentale de lobjet


1.4.1. Les classes et les objets Pour bien comprendre ce quest un objet, nous allons prendre des exemples dans la vie courante puis nous passerons des exemples dans Visual Basic. Ma voiture est un objet, cet objet existe, on peut l' utiliser. Ma voiture fait partie des voitures , du type, du genre voiture (dun point de vue gnrale). Une voiture quelle soit de marque franaise ou trangre, quelle soit cabriolet ou que se soit un break, reste un voiture. Les voitures reprsentent donc une classe dobjet (Class) qui a ses caractristiques : elle a une marque, une gamme, une couleur, une puissance, mais je ne peux pas utiliser les voitures . De manire gnrale, une classe est une reprsentation abstraite de quelque chose, tandis qu' un objet est un exemple utilisable de ce que reprsente la classe. Pour fabriquer ma voiture, je prends les caractristiques de la classe voitures (cest comme un moule) et je fabrique (jinstance) une voiture, je la nomme MaVoiture .

Une classe les voitures >>> Une instance de, un objet MaVoiture 1.4.2. Proprits (attributs) d un objet Si on considre encore lexemple de lobjet MaVoiture , cette dernire possde des caractristiques ou proprits : une marque, une couleur, une puissance Pour indique la couleur de MaVoiture , on utilise la notation suivante :

MaVoiture.couleur
Pour modifier une proprit dun objet, si on veut une voiture vert par exemple :

MaVoiture.couleur = "vert"
MaVoiture.Phares.Avant indique les phares avant de le voiture. MaVoiture.Phares.Avant.Allum indique ltat des phares (Allum ou non) Si je fais : MaVoiture.Phares.Avant.Allum=True (Vrai) cela allume les phares !

Cours Visual Basic.net

MONNY Maxime

Page 4 sur 66

Licence Pro. Rseaux et Tlcommunication 1.4.3. Mthodes MaVoiture fait des choses : elle roule par exemple. Pour faire rouler la voiture jappelle la mthode Roule

Spcialit CMSII

MaVoiture.Roule
Si cest possible pour cette mthode, je peux indiquer quelle vitesse la voiture doit rouler : MaVoiture.Roule(100) 'jai ajout un paramtre Le paramtre est un renseignement envoyer avec la mthode. Il est possible parfois dindiquer en plus si la voiture doit rouler en marche avant ou en marche arrire.

MaVoiture.Roule(10, "Arriere")
Il y a donc 2 manires dappeler la mthode Roule : avec 1 ou 2 paramtres, on dit que la mthode est surcharge; chaque manire d' appeler la mthode s' appelle "signature". 1.4.5. Evnements Des vnements peuvent survenir sur un objet. MaVoiture_dmarre est un vnement, quand la voiture se met en route (si par exemple j' fait ai MaVoiture.Roule(100)), cet vnement dmarre survient automatiquement. L vnement est donc lapplication de mthodes suite une action prcise. Tous cela ce sont des images, mais elles sont destines illustrer ce quest un objet. 1.4.6. La mise en application dans VB.net 1.4.5.1. Fentres et contrles Une application Windows se compose de fentres (nomme aussi Windows form) dans lesquelles se trouvent des contrles (bouton, liste, texte). Exemple de fentre avec 4 contrles : 2 boutons, une zone de texte (un label) et une icne :

Dans une application Windows, il y a aussi des lignes de code utilisant des variables pour faire des calculs.

Cours Visual Basic.net

MONNY Maxime

Page 5 sur 66

Licence Pro. Rseaux et Tlcommunication 1.4.5.2. Tout est objet : En VB.net, tout est objet : les fentres (on dit les formulaires), les variables, les contrles (les boutons, liste, image, case cocher..) ...

Spcialit CMSII

Il faut un moule pour faire un objet. Le moule cest une classe. Le moule va servir crer un objet, on dit une instance. On peut crer une multitude dinstance (une multitude dobjets) avec le mme moule. Pour crer, dmouler un objet, on utilise les mots cl Dim et As New.

Dim objet As New Classe


New est un constructeur. Exemple : crer une fentre (un formulaire) : Je dessine une fentre FormDmarrage (c' la Classe, le moule) puis : est

Dim F As New FormDmarrage


Cre une fentre qui se nomme ' partir du moule, du modle (FormDmarrage) que jai F' dessin. Autre exemple : Comment crer une variable nomm Mavariable pouvant contenir un entier (Integer)

Dim MaVariable As New Integer


Dim MaVariable As Integer 'est correct aussi

Ici, pour une variable, on remarque que New peut tre omis 1.4.5.3. Tout objet a des proprits : F.BackColor indique la couleur de fond de la fentre. Sil y a un bouton, la couleur de fond du bouton sera :

Bouton.BackColor
ou

F.Bouton.BackColor
Noter la syntaxe : La couleur du bouton qui est dans la fentre F

Cours Visual Basic.net

MONNY Maxime

Page 6 sur 66

Licence Pro. Rseaux et Tlcommunication Et donc, on modifie la proprit de la sorte suivante :

Spcialit CMSII

Bouton.BackColor=Red 'modifie la couleur de fond du bouton

Autre exemple: La proprit Visible: si elle a la valeur True, l' objet est visible et si elle est False l' objet n' est donc pas visible. Bouton.Visible=False 'fait disparatre le bouton 1.4.5.4.Les objets peuvent avoir des mthodes Prenons un exemple simplifi. Les Listes droulante (ListBox) ont une mthode Clear qui permet de les vider. Si je veux vider toutes les lignes d' liste nomm Liste1, je fais: une Liste1.Clear la liste est vide

Les proprits et mthodes se nomment les membres d'un objet. 1.4.5.5. Certains objets ont des vnements Reprenons notre bouton. Quand l' utilisateur click dessus, l' vnement Bouton_Click survient. Ce sont les objets contrles (bouton, case cocher..) et les formulaires qui ont des vnements. Vous remarquerez que le nom de lvnement Bouton_Click est compos du nom de lobjet (Bouton) suffix du nom caractrisant lvnement (Click). 1.4.5.6. Interface et implmentation Ce que je vois de l' objet, c' son interface (la dfinition de ces proprits, ces mthodes : est lensemble de ces membres) Exemple: la mthode Clear fait partie de l' interface d' une ListBox. Par contre le code qui effectue la mthode (celui qui efface physiquement toutes les lignes de la listeBox),ce code se nomme implmentation, lui n' ni visible ni accessible. est 1.4.5.7. Visibilit Quand un objet est cre, il est visible (et donc utilisable), uniquement dans la partie du programme o il a t dfini. Par exemple, et habituellement, je peux voir et modifier la couleur d' bouton uniquement dans le un code de la fentre o il est situ.

Cours Visual Basic.net

MONNY Maxime

Page 7 sur 66

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Pour les variables, on parle de porte: la variable peut tre locale (Private) ou de porte gnrale (Public) visible partout. Une variable publique sera donc utilisable dans lensemble des codes de toutes les fentres. Habituellement, la porte dune variable est prive. Pour la rendre publique, il faudra le prciser explicitement dans son code. 1.4.6. En rsum En Visual Basic.net tout est objet. Les classes sont des types d' objet. Pour crer un objet partir d' classe, il faut utiliser les mots cl Dim ..As New une Les membres (proprits et mthodes) de cette classe permettront de manipuler lobjet suite un vnement.

Cours Visual Basic.net

MONNY Maxime

Page 8 sur 66

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

2. Principe et structure des programmes


2.1. Une programmation vnementielle
Nous allons comprendre la programmation vnementielle, cest dire comment fonctionne Visual Basic. Comme dans toute programmation, il est important de se placer sur deux niveaux : Ce que voit l' utilisateur. Ce qu' fait le dveloppeur pour arriver ce rsultat. a 2.1.1. Principes de la programmation VB Le programmeur va dessiner linterface utilisateur (fentre, bouton, liste..). Ensuite, il va uniquement crire les actions effectuer quand certains vnements se produisent sur cette interface. Cest Visual Basic qui va entirement soccuper de la gestion des vnements. 2.1.2. Exemple : Le fameux Hello World Le but de cet exemple est dafficher ' Bonjour'quand on clique sur un bouton. C' pas original, est mais cest le premier programme que lon fait lors de lapprentissage dun nouveau langage. 2.1.2.1. Que voit l'utilisateur du programme? Lutilisateur final, celui qui utilise le logiciel, voit une fentre avec un bouton, Si il appuie sur ce bouton il voit safficher Bonjour .

2.1.2.2. Que se passe t-il dans le programme? Quand l' utilisateur clique sur le bouton, cela dclenche automatiquement un vnement (Button1_Click). Cet vnement contient du code qui affiche Bonjour . 2.1.2.3. Que doit faire le programmeur pour arriver ce rsultat? Pour atteindre ce rsultat, le programmeur va dessiner la fentre, le bouton, la zone d' affichage du texte (un label) puis il va simplement indiquer dans l' vnement Button_Click d' afficher Bonjour . Cours Visual Basic.net MONNY Maxime Page 9 sur 66

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Le fait de dterminer la procdure appeler ou de raliser lappel est entirement pris en charge par VB. 2.1.3. En pratique, ce que fait le programmeur Le programmeur est en mode conception (ou mode Design) pour crire ce programme. 2.1.3.1. La conception de linterface utilisateur Ce que verra lutilisateur final, c' l' est interface utilisateur : une fentre avec des boutons, des listes, du texte.. :

Il cre une fentre : Menu Projet, Ajouter un formulaire Windows, cliquer sur Windows Form, une fentre Form1 apparat. Il ajoute un bouton : Pour cela il utilise la Boite outils.

Il clique sur Boite Outils gauche, bouton Windows Forms, puis bouton Button, il clique dans Form2, dplace le curseur sans lcher le bouton, puis lche le bouton de la souris : le dessin d' un bouton apparat. Pour lexemple, il faut aussi ajouter un label de la mme manire. Un label est un contrle qui permet dafficher un texte.

Cours Visual Basic.net 66

MONNY Maxime

Page 10 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

2.1.3.2. Lcriture du code correspondant aux vnements Lutilisateur doit double-cliquer sur le bouton qu' a dessin pour accder lvnement Click de il ce bouton. Une fentre de conception de code souvre et il apparat :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End Sub
Cela correspond la procdure vnement (entre Sub et End Sub) qui, quand le programme fonctionne, est automatiquement dclenche quand lutilisateur du logiciel clique sur lobjet Button1. Une procdure est un ensemble de ligne de code qui commence par Sub et se termine par End Sub. Pour afficher "Bonjour" dans le label, celui-ci possde une proprit nomme Text qui contient le texte afficher.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = "Bonjour" End Sub
Voil, votre premier programme est crit ! 2.1.4. Excuter et dboguer le programme Il est possible de tester immdiatement le programme en mode dboguage , sans quitter l' environnement de dveloppement: Utiliser le menu Dboguer puis Dmarrer qui lance lexcution du programme ou cliquer sur la flche: Vous lancez l' excution avec le premier bouton, le second servant arrter temporairement l' excution, le troisime terminer l' excution. Remarque : Encore plus rapide, on peut aussi taper sur F5 pour lancer le programme. Quand le programme est totalement crit, termin, test, il est possible de le compiler et ainsi de crer un fichier excutable (possdant une extension .exe ) qui fonctionne de manire autonome en dehors de l' environnement de dveloppement. C' ce fichier excutable qui est fourni l' est utilisateur. 2.1.5. Pour rsumer la programmation vnementielle Le programmeur utilise des outils de dessin pour construire une interface utilisateur : des fentres avec des contrles dessus: menus, boutons, case cocher.. Cours Visual Basic.net 66 MONNY Maxime Page 11 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

VB, pour chaque feuilles ou pour chaque contrle, gnre une liste dvnements, (Evnement li au chargement d' une fentre, vnement li au fait de cliquer sur un bouton, vnement survenant quand on modifie un texte...) Il suffit, dans la procdure vnement qui nous intresse, dcrire le code qui doit tre effectu lorsque cet vnement survient. Comme nous lavons vu le code sert a agir sur linterface (Afficher un texte, ouvrir une fentre, remplir une liste, un tableau), mais il peut aussi effectuer des calculs, valuer des conditions et prendre des dcisions, travailler en boucle de manire rptitive et ainsi effectuer les taches ncessaires.

2.2. Les instructions


Une instruction est un code permettant d' effectuer une certaine opration, une dclaration, une dfinition. Dim A As Integer 'est une instruction (de dclaration) A=1 'est aussi une instruction et effectue une opration. C' habituellement une ' est ligne de code'excutable' ' . Pour mettre des commentaires dans un programme, on le fait prcd de ' :

'Ceci est un commentaire, ce n'est pas une instruction.


Le commentaire, quand lui, ne sera pas excut.

2.3. Les procdures


Une procdure est un ensemble d' instructions, de lignes de code, un groupement d' instructions bien dfinies effectuant une tache prcise.

Exemple concret d' procdure: la procdure Button_Click du premier programme ! une Vous avez vu que lon peut dessiner l' interface, une fentre Form1 par exemple. En mode conception, aprs avoir dessiner linterface, on doit avoir accs aux procdures. Si on double-clique sur la fentre, on a accs aux procdures vnement lies cette fentre, si on double-clique sur un objet (bouton, case cocher on voit apparatre les procdures vnement de ce contrle. 2.3.1. Les procdures lies aux vnements Si on double clique sur le fond dune fentre (dans le programme Bonjour ), on voit apparatre les procdures lies cette fentre et aux contrles contenus dans cette fentre :

Cours Visual Basic.net 66

MONNY Maxime

Page 12 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Public Class Form1 Inherits System.Windows.Forms.Form Dim a As String #Region " Code gnr par le Concepteur Windows Form " Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Label1.Text = End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = "Bonjour" End Sub End Class
Si on dtaille un peu le code de cette feuille, on distingue 3 parties: Ce nest pas une procdure mais la dfinition de la fentre. La fentre fait partie des Windows.Forms.Form. Ces lignes sont gnres automatiquement par VB. Si vous droulez cette partie, en cliquant sur le petit +, vous pouvez lire le code permettant de crer la fentre, les contrles.. C' gnr automatiquement par VB. est

Public Class Form1

Private Sub Form1_Load

Chaque fentre a une procdure Form_Load qui est excute lorsque la fentre est charge, on y met gnralement le code initialisant la feuille. Il y a bien dautres procdures lies la fentre. Drouler la liste box en haut gauche de la fentre de code, cliquer sur (Form1 events), si vous drouler maintenant la liste droite vous aurez tous les vnements qui gnrent une procdure : lors du chargement de la fentre o Load o Unload lors du dchargement de la fentre o Activated lorsque la fentre devient active o GotFocus lorsque la fentre prend le focus lorsque la fentre est redimensionne o Resize o ...

Private Sub Button1_Click

Cest la procdure lie au bouton et qui contient le code effectuer quand lutilisateur clique sur le bouton. Cest l que lon crira le code qui doit seffectuer lorsque lutilisateur clique sur le bouton. De la mme manire que pour la fentre, vous pouvez voir dans la liste en haut, tous les vnements lis aux boutons qui gnrent une procdure : o Click lorsque l' utilisateur clique sur le bouton. o DoubleClick lorsque l' utilisateur double-clique sur le bouton. o MouseDown se dclenche si appuie du bouton de la souris o MouseUp se dclenche si relchement du bouton de la souris o

Cours Visual Basic.net 66

MONNY Maxime

Page 13 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

On voit donc que le formulaire (la fentre) et tous les contrles d' application ont chacun des une procdures pour chaque vnement qui peut survenir. 2.3.2. Les procdures non-lies Parfois on a besoin de code qui fait une tache particulire, qui est utilis plusieurs endroits et qui nest pas lie un vnement. On cre dans ce cas une procdure indpendante des vnements. Le systme des procdures permet aussi de dcouper un problme complexe en quelques fonctions moins complexes et indpendantes les unes des autres. Ces procdures sont en fait des sous-programmes : si une ligne appelle une procdure, le programme saute au dbut de la procdure, il effectue le code de la procdure puis revient juste aprs la ligne qui avait appel la procdure et continue les lignes suivantes. Lappel dune procdure se fait de la sorte :

Call NomdeProcedure()
ou

NomdeProcedure()
2.3.3. Les procdures Sub et les procdures Function Les procdures sont bien dlimites. Il faut distinguer 2 sortes: Les procdures Sub : Elles dbutent par le mot Sub et se terminent par End Sub. Des arguments peuvent lui tre passs mais aucun rsultat nest retourn. Les procdures Function: Elles dbutent par Function et se terminent par End Function. Des arguments peuvent lui tre passs. La diffrence avec une procdure Sub et que, parfois, on a besoin que la procdure retourne un rsultat, qu' donne un rsultat la procdure elle appelante. Cest dans ce cas que lon utilise une fonction.

Exemple :

Function SurfaceCercle(Rayon as Single) As Float Return 3.14*Rayon*Rayon End Function S=SurfaceCercle(12)


On appelle une fonction et on rcupre le rsultat de la sorte suivante :

As Float en fin de ligne, aprs la fermeture de la parenthse, indique que la fonction retourne une variable de type Float (chiffre virgule). Il faut donc que la variable qui reoit la valeur retourne (S dans notre exemple) soit aussi un Float. Il existe une autre manire de retourner le rsultat d' une fonction, reprenons l' exemple prcdent, on peut crire:

Function SurfaceCercle( Rayon as Single) SurfaceCercle= 3.14*Rayon*Rayon Exit Function End Function
Cours Visual Basic.net 66 MONNY Maxime Page 14 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Ici on utilise le nom de la fonction pour retourner le rsultat , avec un signe ' . =' Exit Function permet aussi de sortir de la fonction, cela a le mme effet que Return sauf que Return peut tre suivi d' argument de retour (et pas Exit Function). un Utilisez plutt la mthode Return. Cest plus clair et plus conforme avec les autres langages de programmation. 2.3.4. Les procdures non-lies dans les modules standard Il est noter que la fonction SurfaceCercle est une procdure non-lies un vnement et quelle est donc dintrt gnral Nimporte quelle procdure doit pouvoir lappeler, de plus elle nintervient pas sur les contrles des formulaires et nest donc pas li aux formulaires. On la placera donc dans un module standard qui est un module du programme qui ne contient que du code. (Pas dinterface utilisateur) Pour crer un module standard Menu Projet>Ajouter un module. Lintrt est de regrouper les fonctions qui ont des liens dans le mme module que lon nommera de manire explicite. Exemple : dans le module Module_Calcul_Surface, surface_carre, surface_cercle, 2.3.5. Private / Public Avant le mot Sub ou Function on peut ajouter Private indiquant que la procdure est accessible uniquement dans le module. Cest donc une procdure prive. Les procdures lies aux vnements dune feuille sont prives par dfaut. Public indiquant que la procdure est accessible partir de toute lapplication. Sil ny a rien devant Sub et que la procdure nest pas lie un vnement, la procdure est Public Le mieux est de toujours dfinir si une procdure est publique ou prive de manire explicite. on retrouvera les fonctions

2.4. Les modules


On a vu qu' programme est dcompos en modules, chaque module contenant des procdures. un Chaque module correspond physiquement un fichier ' . .vb' Il existe 3 types de modules : Les modules de formulaires MONNY Maxime Page 15 sur

Cours Visual Basic.net 66

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

- Contenant le dessin des fentres de linterface utilisateur (ou formulaire) et donc les contrles (boutons, listes, zones de texte, cases cocher) - Contenant aussi les procdures lies aux vnements de la feuille (Button_Click) - Contenant les procdures indpendantes des vnements mais qui interviennent sur linterface. Ce sont des Sub() ou des Function(). Les modules standard

Ils servent de stockage de procdures. Procdures dintrt gnral ou non-lies Ce sont des Sub() ou des Function() qui peuvent tre appeles partir de nimporte quel endroit (pourvu qu' soient Public). ils Ils peuvent aussi servir crer les objets ou dclarer les variables Public qui seront utilises donc accessible par la totalit du programme. Les modules de Classe

Ils ont vocation fabriquer des objets, on verra cela plus loin.

Cours Visual Basic.net 66

MONNY Maxime

Page 16 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

3. Environnement de dveloppement
C' l' est IDE: Environnement de dveloppement intgr de Visual Studio de Microsoft.

3.1. Le projet
Quand on lance VB.net, le logiciel prsente une fentre Projets qui permet d' ouvrir un projet existant ou de crer un nouveau projet:

Dans le cas d' cration d' projet Visual Basic normal, il faudra choisir dans les projets Visual une un Basic Application Windows.

Puis il faut donner un nom au projet, modifier si ncessaire le chemin de l' emplacement du projet qui est par dfaut 'C:\Documents and Settings\Nom Utilisateur\Mes documents\Visual Studio Projects' enfin valider sur ' . Ok'

3.2. Une fentre (Windows Form)


Pour ajouter un fentre (un formulaire) : Menu Projet, Ajouter un formulaire Windows, Cliquer sur Windows Form, une fentre Form1 apparat (' Form2' pour la seconde feuille). La zone de travail se trouve au centre de l' cran: C' l' est onglet Form1.vb[Design] ci-dessous qui donne donc accs au dessin de la feuille (du formulaire) on peut ajouter des contrles, modifier la taille de ces contrles..

Cours Visual Basic.net 66

MONNY Maxime

Page 17 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

3.3. Les procdures de la fentre


L' onglet Form1.vb donne accs aux procdures lies Form1. Pour obtenir cet onglet, il suffit de double-cliquer nimporte o dans un espace libre la feuille. (en vitant tout contrle)

La liste droulante de gauche donne la liste des objets, celle de droite, les vnements correspondants. Il est possible en double-cliquant dans le formulaire ou un contrle de se retrouver directement dans le code de la procdure correspondant cet objet.

3.4. Ajouter un contrle


Lajout dun contrle se fait grce au principe du glisser-coller Ajouter un bouton :Cliquer sur Boite Outils gauche , bouton Windows Forms, puis sur Button,cliquer dans la Form, dplacer le curseur sans lcher le bouton, puis lcher le bouton :

Cours Visual Basic.net 66

MONNY Maxime

Page 18 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

3.5. Proprits dun contrle


Quand une feuille ou un contrle est slectionn dans la fentre Design, ses proprits sont accessibles dans la fentre de proprits droite en bas. Ici ce sont les proprits du contrle ' Button1' (BackColor, Image, Texte, etc. que lon peut modifier directement.)

3.6. Les composants dun projet


Pour cela il faut utiliser L' explorateur de solution en haut droite, il permet de voir et d' avoir accs au contenu du projet: Form2.vb qui est une feuille. Module1.vb qui est un module standard. Rfrences qui contient les espaces de nom. AssemblyInfo contient les informations ncessaires pour crer un installateur.

Il suffit de cliquer sur la ligne module1.vb dans l' explorateur de solution pour voir apparatre le module et son code dans la fentre principale. Si on clique sur un espace de noms dans la liste Rfrences, cela ouvre la fentre Explorateur d' objet qui montre l' arborescence des Classes et une description sommaire en bas de la fentre.

3.7. Laide Visual Basic


Quand on tape du code, VB affiche, quand il le peut, des aides. VB permet de choisir dans une liste une des proprits d' objet. un Exemple: Si je cre une variable chane de caractres (Dim Chaine As String , on verra cela plus loin), et que je tape le nom de la variable suivi d' point ' un Chane.' liste des mthodes possibles la s' affiche. Cours Visual Basic.net 66 MONNY Maxime Page 19 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Chaine.

Quand je pointe dans la liste un des membres (proprit ou mthode) un carr jaune affiche la dfinition de la fonction avec ses paramtres et une explication.

VB aide retrouver les paramtres d' fonction: une Si on tape le nom d' une fonction et louverture dune parenthse, VB affiche les paramtres possibles dans un cadre.

En plus il affiche les diffrentes manires d' utiliser les paramtres (les diffrentes signatures), on peut les faire dfiler avec les petites flches du cadre jaune. VB donne accs l' aide sur un mot Cl. Si je clique sur un mot et que je tape F1 l' aide s' ouvre et un long texte donne toutes les explications . VB donne accs l' aide sur les contrles. Si le curseur est sur un contrle et qu je tape F1 l' aide s' ouvre pour donner accs la description des diffrents membres de cet objet. Aussi, une aide dynamique est constamment mise jour. Pour la voir, il faut cliquer sur l' onglet ' Aide Dynamique' bas droite (mme fentre que la fentre proprit). Elle donne une liste de en liens en rapport avec le contexte en cours. Enfin il est toujours possible de rechercher des informations en passant dinterrogation de la barre doutils : Sommaire (plan , arbre de l' aide) Index (liste des mots) Recherche (rechercher un mot) par le point

Cours Visual Basic.net 66

MONNY Maxime

Page 20 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

4. Linterface utilisateur
4.1. Introduction
Linterface utilisateur correspondant aux fentres et contrles que verra l' utilisateur. Pour rappel, on a vu que le dveloppeur dessine cette interface en mode conception (Design) dans l' IDE. Avec lexemple du Hello World , nous avions vu comment crer un projet, ajouter un formulaire Windows (Windows Form), placer un label et interagir avec ce label grce un bouton. Nous avions vu aussi quil tait possible de modifier proprits de ces objets comme la couleur de fond (proprit backcolor ) ou le texte (proprit Text ). Tous les objets ont des proprits communes. Ces proprits communes sont hrites de la classe Control et nous allons les dtailler :

Name : il sagit du nom de lobjet tel quil est gr par lapplication.


Par dfaut, VB baptise tous les objets que vous crez de noms gnriques, comme Form1, Form2, Form3 pour les fentre, List1, List2 pour les listes, Label1, Label2, Remarque : Il est vivement conseill, avant toute autre chose, de rebaptiser les objets que vous venez de crer afin de leur donner des noms plus vocateurs. Il est conseill de dbuter le nom de lobjet par un mot voquant sa nature. Microsoft conseille de prfixer les objets de la sorte : btn pour les Boutons lst pour les ListBox chk pour les CheckBox cbo pour les combos dlg pour les DialogBox frm pour les Form lbl pour les Labels txt pour les Textbox tb pour les Toolsbar rb pour les radiobutton mm pour les menus tmr pour les timers Par exemple, le bouton sur lequel est crit OK sera nomm btnOK .

Text : il sagit du texte qui est associ lobjet. Dans le cas dune fentre, cest le texte qui apparatra dans la barre en haut. Pour un TextBox ou un Label cest videment le texte qui sera affich. On peut modifier cette proprit en mode conception ou dans le code.

Cours Visual Basic.net 66

MONNY Maxime

Page 21 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Exemple : Avec du code comment faire pour que le bouton btnOk porte linscription Ok

btnOk.Text = "Ok"

Indique si un contrle peut rpondre une interaction utilisateur. La proprit Enabled permet l' activation ou la dsactivation des contrles au moment de l' excution. Par exemple, vous pouvez dsactiver les contrles ne s' appliquant pas l' actuel tat de l' application. Vous pouvez galement dsactiver un contrle pour interdire son utilisation. Par exemple, un bouton peut tre dsactiv pour empcher l' utilisateur de cliquer dessus. Si un contrle est dsactiv, il ne peut pas tre slectionn. Un contrle dsactiv est gnralement gris. Exemple : dsactiver le ButtonOk

Enabled : accessible

btnOk.Enabled = False

Visible : Indique si un contrle est visible ou non.


Exemple : rendre invisble le bouton ok

btnOk.visible = False

Attention ! Pour rendre visible une fentre on utilisa la mthode .Show.

Font : Permet le choix de la police de caractres affiche dans lobjet.

BackColor, ForeColor : Couleur du fond, Couleur de lavant plan


Pour un bouton Forecolor correspond au cadre et aux caractres. Exemple :

ButtonOk.ForeColor=

System.Drawing.Color.Blue

Tag : Permet de stocker une valeur ou un texte li l' objet.

On l' utilise souvent comme un Flag (drapeau) li l' objet. Par exemple: une liste peut contenir la liste des CD ou des DVD ou des K7, quand je charge la liste des CD, je rajoute List1.Tag="CD" cela permet ultrieurement de voir ce qu' y a dans la liste. il

Ces proprits sont communes et essentiellement utilises. Cependant, il y a bien d' autres proprits propres aux objets. Evnements lis aux objets On a vu que les objets de l' interface utilisateur ont des procdures dclenches par les vnements de cet objet. Cest le cas, par exemple, quand l' utilisateur clique sur un bouton btnOk , la procdure btnOk_Click s' effectue. Cours Visual Basic.net 66 MONNY Maxime Page 22 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Certains vnements sont communs tous les contrles: Click DoubleClick GotFocus LostFocus KeyUp KeyPress KeyDown Il y a toujours des mthodes Changed dclenches par un changement d' tat: CheckedChanged pour une case cocher, TextChanged pour un contrle texte. Pour ne pas alourdir les exemples, nous crivons souvent une version simplifie de l' en-tte de la procdure.

4.2. Les feuilles


Elles correspondent aux fentres ou formulaires ou Windows Form. Toute linterface se trouve sur des fentres. Proprits Bien sur, la fentre possde les proprits qui peuvent tre modifies en mode design dans la fentre ' Proprits' droite ou par du code:

Name : Nom du formulaire. Pour elles aussi, Il faut leurs donner un nom explicite. Par exemple : FrmDemarrage
Ds quune fentre est cre, il faut modifier immdiatement ses proprits en mode conception pour lui donner laspect que lon dsire.

Text : Cest le texte qui apparatra dans la barre en haut. Icon : proprit qui permet dassocier la feuille un fichier icne. Cette icne saffichera dans la barre de Titre, tout en haut gauche. Si la feuille est celle par dfaut du projet, cest galement cette icne qui symbolisera votre application dans Windows.
barre de tache (Minimized). Exemple: mettre une fentre en plein cran avec du code.

WindowState : Donne ltat de la fentre : Plein cran (Maximized), normale (Normal), dans la me.WindowState = FormWindowState.Maximized

(Quand on tape me.WindowsState= Vb donne la liste des valeurs possible)

ControlBox : Si cette proprit comme valeur False, les boutons de contrle situs droite de la barre de la fentre napparaissent pas. MaximizeBox : Si cette proprit comme valeur False, le boutons de contrle Plein cran situs droite de la barre de la fentre napparat pas. MinimizeBox : Si cette proprit comme valeur False, le boutons de contrle Minimize situs droite de la barre de la fentre napparat pas.

Cours Visual Basic.net 66

MONNY Maxime

Page 23 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

FormBorderStyle : Permet de choisir le type des bords de la fentre : sans bord (None), bord simple (FixedSingle) ne permettant pas lutilisateur de modifier la taille de la fentre, bord permettant la modification de la taille de la fentre (Sizable).. Exemple: Me.FormBorderStyle =FormBorderStyle.Sizable StartPosition : Permet de choisir la position de la fentre lors de son ouverture. Me.StartPosition = FormStartPosition.CenterScreen

Fentre au centre de lcran ? la position qui existait lors de la conception ...? Exemple :

MinSize et MaxSize : Donne les dimensions minimums et maximums que l' peut utiliser on pour redimensionner une fentre. Opacity : Allant de 0% 100%, permet de crer un formulaire plus ou moins transparent. Me.TopMost : Pour dfinir au moment de la conception un formulaire en tant que formulaire d' avant-plan d' application. une Exemple : Me.TopMost = True
Ouvrir une fentre 2 mthodes : Form1.ShowDialog() : La fentre f est modale car on a utilis ShowDialog : quand elle est ouverte, on ne peut pas aller dans une autre fentre de l' application avant de sortir de celle l. (A titre d' exemple les fentres MessageBox sont toujours Modales). Form1.Show() pour ouvrir une feuille non modale. Attention : une fentre est un objet et est ' visible' suivant les rgles habituelles des objets. Si on instance une fentre partir d' une procdure, elle sera visible dans cette procdure. Si elle est ' Public' instanci dans un module standard, elle sera visible partout. et Evnements Quand la feuille est charge la procdure Form1_Load() est active. On pourra donc y mettre le code initialisant la feuille.

Form1_Activated() est excut ensuite car la feuille deviendra active. Form1.GotFocus() est enfin excut puisque la fentre prend le focus. Form1.Enter() est excut lorsque l' utilisateur entre dans la fentre.
Ds qu' une proprit change de valeur un vnement proprit Changed' se dclenche: Form1.BackColorChanged() se dclenche par exemple quand la couleur du fond change.

Form1.Resized() se dclenche quand on modifie la taille de la fentre. (c' intressant pour est interdire certaines dimensions) Form1.Closing() se produit pendant la fermeture de la fentre (on peut annuler cette fermeture en donnant la variable Cancel la valeur True) Form1.Closed() se produit lorsque la fentre est ferme.
Cours Visual Basic.net 66 MONNY Maxime Page 24 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Il y en a beaucoup d' autres comme par exemple les vnements qui surviennent quand on utilise la souris (MouveUp, MouseDown, MouseMove) ou le clavier (KeyUp, KeyDown, KeyPress) sur la fentre ; Left Right, Size, Position pour positionner la fentre ou dfinir sa taille.. Mthodes On a dj vu que pour faire apparatre ne fentre il faut utiliser .ShowDialog (pour qu' soit elle modale) ou .Show (pour non modale). Me.Close ferme le formulaire. Me.Activate l' active s' est visible il Me.Hide rend la fentre invisible. System.Windows.Forms.Form On se rend compte que quand on dessine une fentre Form2 par exemple, VB cre une nouvelle classe.

Public Class Form2

End Class
Elle hrite de System.Windows.Forms.Form: on voit bien dans le code:

Inherits Systeme.Windows.Forms.Form

Cette partie du code contient : du code gnr automatiquement par le concepteur Windows Forms (on peut le voir en cliquant sur le petit ' ) et qui cre la fentre et ses contrles. +' les procdures lies aux vnements.

4.3. Les boutons


Proprits

Name est utilis pour lui donner un nom explicite (BoutonOk BoutonCancel) FlatStyle donne un aspect au bouton

Text contient le texte a afficher sur le bouton.

Si on y inclut un & la lettre qui suit sera soulign et sert de raccourci clavier. &Ok donne sur le bouton Ok Cours Visual Basic.net 66 MONNY Maxime Page 25 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

ForeColor correspond la couleur de ce texte BackColor tant la couleur du fond TextAlign permet de positionner le texte dans le bouton. Image contient le nom de limage afficher sur le bouton (si on veut afficher une image). (AlignImage permet de positionner limage sur le bouton.) On peut aussi puiser une image dans une ImageList grce la proprit ImageList et ImageIndex, on peut ainsi changer dimage. La proprit BackGroundImage permet de mettre une image de fond.
Evnement

Click() : quand lutilisateur clique sur le bouton la procdure Button1_Click() est traite.

4.4. Les TextBox


Les contrles TextBox contiennent du texte qui peut tre modifi par l' utilisateur du programme.

Proprit

Text qui contient le texte qui a t tap est la principale proprit retenir.
La proprit .text permet aussi de modifier le texte visible dans le contrle.

TextBox1.text = "Bonjour" 'Affiche "Bonjour" dans le contrle. monTexte = TextBox1.text 'Rcupration du contenu du contrle.

Un TextBox correspond un mini diteur de texte.(Mais sans enrichissement : sans gras, ni italique) La police de caractres affectant la totalit du texte peut simplement tre modifie par la proprit Font. La couleur du texte peut tre modifie par ForeColor, mais la totalit du texte aura la mme couleur. Parmi les multiples proprits de ce contrle, signalons : Multiline autorise ou non lcriture sur plusieurs lignes. Scrollbars fait figurer une barre de dfilement horizontale ou verticale (ou les deux) PaswordChar crypte le texte entr sous forme dtoiles. MaxLength limite le nombre de caractres quil est possible de saisir. TextLength donne la longueur du texte Mthodes En mode MultiLine la collection Lines contient dans chacun de ses lments une des lignes affiches dans le contrle (TexBox1.Lines(0) contient la premire, TexBox1.Lines(1) la seconde..). Les TextBox contiennent une mthode Undo:annulation de la dernire modification. La proprit CanUndo du TextBox doit tre True. Cours Visual Basic.net 66 MONNY Maxime Page 26 sur

Licence Pro. Rseaux et Tlcommunication Ensuite pour modifier:

Spcialit CMSII

If textBox1.CanUndo = True Then textBox1.Undo() textBox1.ClearUndo() ' Vider le buffer Undo. End
On peut ajouter du texte au contenu dj prsent dans le TextBox

textBox2.AppendText(MonText)
Evnements

Les vnements lis au TextBox : KeyDown survient quand on appuie sur le touche. KeyPress quand la touche est enfonce. KeyUp quand on relche la touche.

TexTBox1_KeyPress permet de rcuprer la touche imprimable dans e.KeyChar mais impossible d' modifier la valeur (e.KeyChar est en lecture seule) en e.KeyDown et .KeyUp permettent, par exemple, de voir si MAJ ALT CTRL ont t presss.

4.6. Les labels


Il y a 2 sortes de Label: Le Label Le LinkLabel que nous tudierons en TP On en a dj utilis pour afficher le fameux Hello World Les contrles Label sont gnralement utiliss pour fournir un texte descriptif un contrle. Vous pouvez par exemple utiliser un contrle Label pour ajouter un texte descriptif un contrle TextBox. Ceci a pour but d' informer l' utilisateur du type de donnes attendu dans le contrle. Exemple: Donner votre nom: La lgende qui s' affiche dans l' tiquette est contenue dans la proprit Text du label. Pour modifier le texte du label par du code:

Label1.Text="Donner votre Prnom"

La proprit Alignement vous permet de dfinir l' alignement du texte dans l' tiquette, BorderStyle permet de mettre une bordure (un tour) ou non.. Il est galement possible dy afficher une image avec la proprit .Image Remarque: La mise jour de l' affichage du Label (comme les autres contrles d' ailleurs) est effectue en fin de Sub. Si on crit:

Dim i As Integer For i = 0 To 100 Label1.Text = i.ToString Next i


Cours Visual Basic.net 66 MONNY Maxime Page 27 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

La variable i prend les valeurs 1 100, mais l' affichage rien ne se passe pendant la boucle, VB affiche uniquement 100 la fin; si on dsire voir les chiffres dfiler avec affichage de 0 puis 1 puis 2... il faut rafrachir l' affichage chaque boucle avec la mthode Refresh()

Dim i As Integer For i = 0 To 100 Label1.Text = i.ToString: Label1.Refresh() Next i

4.6. Les cases cocher


Il y a 2 sortes de case cocher:

Les cases cocher (CheckBox): Elles sont carres, et indpendantes les unes des autres, mme si elles sont regroupes dans un cadre pour faire plus joli. Les boutons radio (RadioButton): Elles sont rondes et font toujours partie dun groupe (Elle sont dans une fentre ou dessin dans un objet GroupBox). Ce groupe est indispensable, car au sein dun groupe de RadioButton, un seul bouton peut tre coche la fois : si lutilisateur en coche un, les autres se dcochent. Proprits

Text, bien sur, permet dafficher le libell cot du bouton, on peut aussi mettre une image avec la proprit Image. CheckAlign permet de mettre la case cocher droite ou gauche du texte. Checked : la proprit la plus intressante de ces cases car elle permet de savoir si elle est coche ou non. Sa valeur change de False True si la case est coche. RadioButton.Checked=True
Procdure La procdure RadioButton.CheckedChange() permet dintercepter le changement dtat dun bouton.

'Coche le bouton

4.7. Les listes


Il y a 4 sortes de listes: Les ListBox. Les CheckedListBox Les Combos Les ListView.

Cours Visual Basic.net 66

MONNY Maxime

Page 28 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Les ListBox

Proprits Le contrle ListBox affiche une liste d' lments dans laquelle l' utilisateur peut faire un ou plusieurs choix. Lorsque la proprit MultiColumn a la valeur true, la liste saffiche avec une barre de dfilement horizontale. Lorsque la proprit ScrollAlwaysVisible a la valeur true, la barre de dfilement s' affiche, quel que soit le nombre d' lments. La proprit SelectionMode indique le nombre d' lments pouvant tre slectionns en mme temps.

SelectedIndex retourne un entier correspondant au premier lment slectionn dans la zone de liste. Si aucun lment n' slectionn, la valeur de la proprit SelectedIndex est -1. est Lorsque plusieurs lments sont slectionns, la valeur de la proprit SelectedIndex correspond au rang du premier lment slectionn dans la liste.
La proprit SelectedItem retourne l' lment slectionn ("poisson" dans l' exemple si dessus. La proprit Items.Count indique le nombre d' lments contenus dans la liste. Attention le premier lment est toujours llment 0, aussi le nombre dlments est gal au numro de llment le plus haut plus un.

Items est une collection contenant tous les lments chargs dans la liste.
Si la proprit Sorted est True, la liste est trie automatiquement. Mthodes & Exemple Pour ajouter ou supprimer des lments dans un contrle ListBox, il faut utiliser la mthode Items.Add, Items.Insert, Items.Clear ou Items.Remove. En mode conception, vous pouvez galement utiliser la proprit Items. Exemples :

For i = 1 To 100 ListBox1.Items.Add(i.ToString) Next i

- Charger dans une ListBox1 les nombres de 1 100 :

A retenir ! La listBox contient une collection d'Items. Elle na pas de nombre initialement dfini dlment. Dailleurs son contenue est dans la collection ListBox.Items() Cours Visual Basic.net 66 MONNY Maxime Page 29 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Dim tab() As String = {"one", "two", "three"} ListBox1.DataSource = tab

- On peut 'charger' une ListBox automatiquement avec un tableau en utilisant Datasource:

Dim x As Integer x = List1.Items.Add("Hello") List1.SelectedIndex = x

- Comment connatre l'index de l'lment que l'on vient d'ajouter? (et le slectionner)

On utilise la valeur retourne (x dans notre exemple) par la mthode Add.

Les CheckedListBox
Cest une Listbox mais avec une case cocher sur chaque ligne.

Attention ! SelectedItems et SelectedIndices ne dterminent pas les lments qui sont cochs, mais ceux qui sont en surbrillance. La collection stocke dans la proprit CheckedItems vous donne par contre les lments cochs. La mthode GetItemChecked (avec comme argument le numro d' index) dtermine si llment est coch. Exemple : Pour dterminer les lments cochs dans un contrle CheckedListBox, testez chaque lment de la collection CheckedItems, en commenant par 0. Notez que cette mthode fournit le numro que porte l' lment dans la liste des lments cochs, et non dans la liste globale. Par consquent, si le premier lment de la liste n' pas coch alors que le deuxime l' le code est est, ci-dessous affiche une chane du type Item coch 1 = Dans la liste : 2 .

If CheckedListBox1.CheckedItems.Count <> 0 Then 'Sil y a des lments cochs une boucle balaye les lments cochs '(collection CheckedItems) et affiche le numro de llment DANS LA LISTE toutes lignes. Dim i As Integer Dim s As String = "" For i = 0 To CheckedListBox1.CheckedItems.Count - 1 s = s & "Item coch " & (i+1).ToString & " = " & Dans la liste : & CheckedListBox1.CheckedItems(i).ToString & ControlChars.CrLf Next i MessageBox.Show(s) End If
On rappelle comme toujours que quand on parle du 3eme lment cela correspond lindex 2.

Les ComboBox
Cest le contrle le plus utilis entre toutes les listes.

Cours Visual Basic.net 66

MONNY Maxime

Page 30 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Les ComboBox (listes combines) possdent deux caractristiques essentielles par rapport aux ListBox . Elles sont modifiables : cest--dire que lutilisateur a la possibilit dentrer un lment qui ne figure pas au dpart dans la liste. Cette caractristique concerne donc les donnes proprement dites ; cela se traduit par la prsence dune zone de texte en haut de la liste. Elles peuvent tre droulantes ou dj droule: cest--dire quon ne voit quun seul lment de la liste la fois, et quil faut cliquer sur la flche du ct pour " dplier " la liste, ou bien que la liste est dj visible. Cest la proprit DropDownList qui gre cela.

La combos du bas a sa proprit DropDownList=Simple Lutilisateur peut donc cliquer dans la liste (ce qui met le texte cliqu dans la zone texte), ou taper un nouveau texte. Proprits

Items.Count : proprit qui renvoie le nombre dlments dune liste. Multiselect : proprit qui permet la slection multiple. Sorted : proprit qui trie les lments dune liste. Items.Add : mthode qui ajoute un lment une liste. Items.Clear : mthode qui efface tous les lments dune liste. Item.Remove : mthode qui supprime un lment de la liste.
Mthodes

Comment rcuprer la zone texte quand elle change ? On utilise l'vnement TextChanged qui se dclenche quand le texte est modifi.

Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged Label1.Text = ComboBox1.Text End Sub

Les ListView
De plus en plus puissant, le contrle ListView permet dafficher des listes multi colonnes, ou des listes avec icne ou case cocher. En mode conception La proprit View permet de dterminer laspect gnral du contrle, elle peut prendre les valeurs : Details permet une liste avec sous lment et titre de colonnes. Liste utilise un ascenseur horizontal.

LargeIcon SmallIcone

Cours Visual Basic.net 66

MONNY Maxime

Page 31 sur

Licence Pro. Rseaux et Tlcommunication Par programmation : ListView1.View= View.Details Utilisons le mode dtails (Appel mode Rapport)

Spcialit CMSII

Comment remplir les en-ttes de colonnes? Grce la proprit Columns, on peut dterminer le nom de la colonne, sa taille et son alignement :

ListView1.Colomns.Add(NomColonne1, 60, HorizontalAlignment.Left)


Comment ajouter une ligne dans un ListView ?

Dim LVI As New ListViewItem LVI.Text = col1_ligne1 LVI.SubItems.Add(col2_ligne1) LVI.SubItems.Add(col2_ligne1) ListView1.Items.Add(LVI)

4.8. Les boites toutes faites


Ces fentres toutes faites existent pour vous faciliter le travail. Il existe : Les MessageBox. Les InputBox Les OpenFileDialog Les SaveFileDialog Les MessageBox Cest une fonction qui affiche un message dans une bote de dialogue, attend que l' utilisateur clique sur un bouton (Ok ou Oui-Non..), puis retourne un nombre entier qui indique le bouton choisi par l' utilisateur.

Reponse=MessageBox.show(TexteAAfficher, Titre, TypeBouton, Icone, BoutonParDfaut)

TexteAAfficher : Obligatoire. Expression String affiche comme message de la bote de dialogue (longueur maximale 1 024 caractres). N' oubliez pas d' insrer un retour chariot si le texte est long, cela cre 2 lignes. Titre : Expression String affiche dans la barre de titre de la bote de dialogue. Si l' argument Titre est omis, le nom de l' application est plac dans la barre de titre.
Cours Visual Basic.net 66 MONNY Maxime Page 32 sur

Paramtres

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

afficher :

TypeBouton : reprsente la somme des valeurs spcifiant le nombre et le type de boutons MessageBoxButtons.OKOnly Un seul bouton : Ok MessageBoxButtons.YesNo Deux boutons : Oui/Non MessageBoxButtons.OkCancel OK ou Annuler MessageBoxButtons.AbortRetryIgnoreAnnule,Recommence, Ignore

ou

Icne : reprsente le style d' icne utiliser : MessageBox.Icons.Exclamation MessageBox.Icons.Question MessageBox.Icons.Information BoutonParDfaut : dfinit le bouton o sapplique le focus par dfaut MessageBox.DefaultButtons.DefaultButton1 MessageBox.DefaultButtons.DefaultButton2 MessageBox.DefaultButtons.DefaultButton3
Retour de la fonction Retourne une constante qui indique quel bouton a t press :

DialogResult.Yes DialogResult.No DialogResult.Cancel DialogResult.Retry DialogResult.Ok

Remarque : Lancienne syntaxe VB6 avec MsgBox est conserve :

Reponse= MsgBox(TexteAAfficher, TypeBouton, Titre)


Les InputBox Comme en javascript, une fonction permet douvrir une fentre qui pose une question. Elle retourne la rponse tape par lutilisateur. Cette fois-ci, le retour est effectu dans une simple variable String.

Dim Nom As String Nom = InputBox("Bonjour","Tapez votre nom ?")


Cela donne :

On pourrait rajouter un 3eme argument : la rponse par dfaut. Si lutilisateur clique sur le bouton annuler, une chane vide est retourne. Cours Visual Basic.net 66 MONNY Maxime Page 33 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Les OpenFileDialog Ouvre une boite de dialogue permettant de choisir un nom et un chemin de fichier. Par contre, cest au programmeur d' crire le code lisant les fichiers. Dans la boite Outils, cliquez sur OpenFileDialog puis cliquez sur la fentre en cours : un contrle OpenFileDialog1 apparat sous le fentre.

OpenFileDialog1.ShowDialog()

Dans le code lendroit o doit souvrir la fentre, tapez :

With OpenFileDialog1 .Filter="Fichiers txt|*.txt" 'filtre uniquement sur les .txt .Multiselect=False 'slectionner 1 seul fichier .CheckFileExists=True 'Vrifie si fichier existe End With If OpenFileDialog1.ShowDialog= DialogResult.Ok Then end if
Comment afficher la boite et vrifier si l'utilisateur cliqu sur ouvrir?

Cest suffisant pour crer une fentre montrant larborescence des fichiers et rpertoires et pour que l' utilisateur choisisse un fichier, mais le plus souvent on a besoin que la boite de dialogue propose un type de fichier et un rpertoire prcis. Par exemple je veux ouvrir un fichier .TXT dans le rpertoire c:\MesTextes Il faut dans ce cas, AVANT la mthode ShowDialog() renseigner certaines proprits du contrle OpenFileDialog1 :

Maintenant, OpenFileDialog1.FileName contient le nom du fichier slectionn (avec extension et chemin) Path.GetFileName(OpenFileDialog1.FileName) donne le nom du fichier sans chemin. Les SaveFileDialog Boite de dialogue fonctionnant de la mme manire que OpenFileDialog mais avec quelques proprits spcifiques. Ouvre une boite de dialogue permettant l' utilisateur de choisir un nom et un chemin de fichier, au programmeur d' crire le code enregistrant les fichiers.

SaveFileDialo1.CreatePrompt=True 'Message de confirmation si cration d'un nouveau fichier SaveFileDialo1.OverwritePrompt=True'Message si le fichier existe dj vite l'effacement d'ancienne donnes SaveFileDialo1.DefaultExt="txt"'extension par dfaut
On rcupre aussi dans .FileName le nom du fichier si la proprit .ShowDialog a retourn

DialogResult.Ok

4.9. Regroupement de contrles


On peut regrouper des contrles dans : Les GroupBox. Les Panels. Les PictureBox. Les TabControl. Cours Visual Basic.net 66 MONNY Maxime Page 34 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

GroupBox et Panel Il est possible de regrouper des contrles dans un container, par exemple plusieurs RadioButton. Le container peut tre un GroupBox ou un Panel.

GroupBox

(AutoScroll =True et BorderStyle=Single)

Panel

Le contrle Panel est similaire au contrle GroupBox ; mais, seul le contrle Panel peut disposer de barres de dfilement et seul le contrle GroupBox peut afficher une lgende. La lgende de la GroupBox est dfinie par la proprit Text. TabControl Ce contrle permet de crer des onglets comme dans un classeur, entirement grs par VB. Chaque page peut contenir d' autres contrles. En mode conception, en passant par la proprit TabPages, on ajoute des onglets dont la proprit Text contient le texte afficher en haut (Ici: Page 1..). Il suffit ensuite de cliquer sur chaque onglet et d' ajouter les contrles. y

A lexcution, les onglets fonctionneront automatiquement. Exemple: 3 cases cocher permettent de colorer un label en vert rouge ou bleu. Comment grer les vnements? On peut crire 3 routines compltes et identiques. Il est aussi toujours possible dans chacune des 3 procdures CouleurX.checkedChanged de vrifier si la case est coche et de modifier la couleur. C' plus lgant d' est avoir une procdure unique qui, en fonction de la case cocher qui a dclench l' vnement, changera la couleur. Remarque : la notion de groupe de contrle comme en VB6 n' existe plus. Par contre par l' intermdiaire du Handles, il est possible d' associer plusieurs vnements une seule procdure:

Private Sub CouleurCheckedChanges (ByVal sender As System.Objet, ByVal e As System.EventArgs) Handles CouleurVert.CheckedChanged, CouleurRouge.CheckedChanged, CouleurBleu.CheckedChanged End Sub
Cette procdure sera active quand les cases cocher CouleurVert CouleurBleu, CouleurRouge changeront d' tat. A noter que Sender est le contrle ayant dclench l' vnement et e l' vnement correspondant. Pour modifier la couleur il faut ajouter dans la procdure: Cours Visual Basic.net 66 MONNY Maxime Page 35 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Select Case sender.Name Case "CouleurRouge" Lbl.BackColor= ..Rouge .....

4.10. Positions des contrles


Tous les contrles hritent donc tous de la classe Windows Forms. Les Windows Forms ont des proprits, que tous les contrles rcuprent. Cest ces proprits qui vont nous servir dimensionner et positionner nos contrles. Taille & Position Left, Top coordonnes du coin suprieur droit (ou Bottom, Right infrieur gauche) Location : coordonnes X,Y du coin suprieur droit du contrle en pixels. Height, Width pour la hauteur et la largeur du contrle en pixels. Size : hauteur, largeur peut aussi tre utilis.

Button.left=188 Button.Top =300


Ou

Exemple :

Button.Location= New System.Drawing.Point(188,300) (System.Drawing.Point() positionne un point dans lespace)


Redimensionnement Pour que lutilisateur puisse redimensionner la fentre quil a sous les yeux (en cliquant sur les bords) il faut que la proprit FormBorderStyle de la fentre = Sizable. Mais si lutilisateur modifie la taille de la fentre qui contient les contrles, la taille des contrles ne suit pas. En VB.Net, la proprit Anchor permet dancrer les contrles aux bords de la fentre. Le bord ancr dun contrle reste gale distance du bord du conteneur quand le conteneur (la fentre) est redimensionn. En mode conception il suffit de cliquer sur '. .'en face de Anchor pour voir souvrir une fentre, . cliquer sur les bords que vous voulez ancrer. Par dfaut les bord Top (haut) et left(gauche) sont ancrs : vos contrles ne bougeront donc pas au re-dimensionnement de la fentre (qui sert de conteneur) sur ces bords gauche et bas. Exemple : Prenons 2 contrles dans une fentre, celui de gauche a la proprit Anchor=left et celui de droite left et right. Si je dplace le bord droit (ou le gauche dailleurs) : le contrle droit est redimensionn, les 2 contrles restent cote cote.

Cours Visual Basic.net 66

MONNY Maxime

Page 36 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Amarre aux bords. Il y a mme possibilit damarrer aux 4 bords (Fill) pour remplir le conteneur. On va utiliser cela pour faire une barre dtat par exemple.

Dock

4.11. Les menus


Beaucoup dapplications contiennent un menu. En gnral, on remarque que le contenu de ce menu (Fichier, Edition, Outils, Aide, ) est standardis afin que lutilisateur sy retrouve sans aide. Main Menu Pour crer le principale menu de votre application, Iil suffit de chercher dans la boite outils le contrle qui se nomme main menu et le dposer sur la fentre : il apparat en dessous de la fentre. Pour inscrire les diffrents lments du menu, il suffit de mettre le curseur sur le menu en haut de la fentre, ou est crit Taper ici : tapez le texte du menu, Fichier par exemple.

Il apparat automatiquement un Tapez Ici pour les lignes dessous (le sous-menu) ou le menu suivant. Les lignes du menu sont nommes automatiquement MenuItem1, MenuItem2, ... Quand le curseur est sur une ligne du menu, la fentre de proprit donne les proprits de la ligne : La proprit ShortKey permet de crer un raccourci. La proprit Checked permet de cochez la ligne La proprit Visible permet de faire apparatre ou non une ligne. Si vous double-cliquez sur la ligne du menu vous voyez apparatre la procdure vnement lie la ligne du menu :

Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click End Sub
Quand lutilisateur clique sur une ligne du menu, cest le code contenu dans cette procdure qui est effectu. Menu Contextuel C' un menu qui s' est ouvre quand, sur un objet, on clique sur le bouton droit de la souris. En allant dans la boite outils, chercher un Context menu, on le dpose sur la fentre : il apparat en dessous de la fentre. Si on le slectionne avec la souris, il apparat en haut et comme pour le menu principal, on peut ajouter des lignes.

Cours Visual Basic.net 66

MONNY Maxime

Page 37 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Il faut ensuite affecter ce Context Menu un contrle; pour cela donner la proprit ContextMenu du contrle le nom du ContextMenu.

TextBox1.ContextMenu= ContextMenu1
Si vous double-cliquez sur une ligne du menu vous voyez apparatre les procdures vnement correspondantes.

4.12. Rendre une interface active


Lorsqu' fentre ou un contrle est actif on dit qu' a le focus. Si une fentre prend le focus, sa une il barre de titre en haut prend la couleur active, si c' un contrle texte, le curseur apparat dedans. est Comment donner le focus une fentre ? Si une fentre est visible la mthode Activate lui donne le focus.

Form1.Activate()

Dans ce cas l' vnement Form1_Activated survient. Lvnement Form1_Deactivated est dclench quand la fentre perd le focus.

TxtNom.Select() dedans.

Comment donner le focus un contrle ?

'donne

le

focus

au

textBox

et

met

le

curseur

Rappel : On peut interdire a un contrle le focus en donnant la valeur False sa proprit CanFocus. L' vnement GotFocus se produit quand le contrle prend le focus. Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus End Sub L' vnement LostFocus se produit quand le contrle perd le focus. Les vnements Enter, Leave se produit quand l' utilisateur entre ou sort du contrle. En plus du focus, cela permet dobtenir un verrou exclusif sur ce contrle. En dautres termes, si un autre processus tente daccder au contrle, il se mettra en attente jusqu ce que le premier contrle libre le verrou avec Leave. Certains contrles ne peuvent pas avoir le focus, comme les labels par exemple. Dans une application ou un utilisateur saisi beaucoup de donnes dans de multiples contrles, il passe souvent d' contrle (TextBox par exemple) au suivant avec la touche TAB. un |

Comment permettre cela? Chaque contrle une proprit TabIndex qui s' incrmente automatiquement en commenant par 0 puis 1, 2, 3... quand on ajoute des contrles sur une fentre. Lorsque l' utilisateur appuie sur TAB, le focus passe au contrle qui a le TabIndex immdiatement suprieur. Cours Visual Basic.net 66 MONNY Maxime Page 38 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

ordre de tabulation. On peut modifier le TabIndex des contrles pour modifier l' Quand TabStop a la proprit False (au niveau d' contrle) celui ci est exclu de l' un ordre de tabulation et le focus ne s' arrte pas. Raccourcis clavier Dans beaucoup d' applications certains contrles ont un raccourci clavier: Exemple: Nouveau est une ligne de menu. N tant soulign, ALT-N dclenche la ligne de menu, donne le focus au contrle. Comment faire cela: Dans la proprit Text du contrle, quand on tape le texte en mode conception, il faut mettre un ' ' & avant la lettre qui servira de raccourci clavier. ' &Nouveau' dans notre exemple donnera bien Nouveau et ALT N fonctionnera. Pour une TextBox, la proprit Text ne peut pas tre utilise, aussi il faut mettre devant la TextBox un contrle label (qui lui ne peut pas avoir le focus), si le TabIndex du label et du TextBox se suivent, le fait de faire le raccourci clavier du Label donnera le focus au TextBox.

4.13. ToolBar / StatusBar


La barre de boutons En rgle gnrale, la barre de boutons reprsente des raccourcis sur les fonctions les plus utilises dans le main menu . Voici un exemple classique, sous le menu il y a une barre de bouton: Nouveau, Ouvrir, Enregistrer, Chercher, Imprimer...

Il faut chercher dans la boite outils un contrle ToolBar, il se place en haut, sous le menu. Mettre aussi un ImageList. (Un contrle ImageList est un contrle qui stocke des images, chaque image tant chargs en mode conception et repres par un numro (0,1,2,3..) Dans les proprits du ToolBar mettre dans la proprit ImageList, le nom du contrle ImageList qui contient les images des boutons. Ouvrir la collection Buttons dans la fentre des proprits de la ToolBar pour pouvoir ajouter ou modifier les boutons:

Cours Visual Basic.net 66

MONNY Maxime

Page 39 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Vous pouvez ajouter ou enlever des boutons. Chaque bouton a ses proprits affiches droite: Name : Nom du Bouton image (contenue dans l' ImageList) qui doit s' afficher ImageIndex donne le numro de l' dans le bouton. ToolTipText donne le texte du ToolTip (Carr d' aide qui apparat quand on est sur le bouton) Il faut aussi que la proprit ShowToolTip de la ToolBar soit True L' vnement dclench par le click de l' utilisateur sur un bouton est: ToolBar1_ButtonClick L' argument e contient les arguments de l' vnement click de la ToolBar. e.Button contient le nom du bouton qui a dclench l' vnement. Pour chaque nom de bouton, on appellera la procdure correspondante ensuite. Comme

ToolBar1_ButtonClick
Voici le code complet:

d' habitude,

il

suffit

de

double-cliquer

sur

la

ToolBar

pour

faire

apparatre

Private Sub ToolBar1_ButtonClick(ByVal Sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles toolBar1.ButtonClick If e.Button Is NewButton Then NewDoc() ElseIf e.Button Is OpenButton Then Open() ElseIf e.Button Is SaveButton Then Save() ElseIf e.Button Is PreviewButton Then PrintPreview() ... End If End Sub
Contrle StatusBar La barre d' se trouve en bas de la fentre et affiche des informations relatives aux oprations tat en cours.

Dans la fentre des proprits du StatusBar, la collection Panels contient les zones d' affichage du StatusBar. Cours Visual Basic.net 66 MONNY Maxime Page 40 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Dans le code, pour modifier le texte d' zone faire: une

StatusBar1.Panels(0).Text="1715.2F"

4.14. Image
Pour afficher des images, il existe le contrle PictureBox. Le contrle PictureBox sert afficher des graphismes au format bitmap, GIF, JPEG ou icne (Extension .BMP .GIF .JPG .WMF .ICO). Les GIF anims sont acceptes et s' animent sous VB. L' image affiche est dtermine par la proprit Image, laquelle peut tre dfinie au moment de l' excution ou du design. La proprit SizeMode dtermine la faon dont l' image et le contrle se dimensionnent l' par rapport l' un autre.

PictureBox1.Image = Image.FromFile("image.gif")
Remarque : Pour quoi la syntaxe suivante ne fonctionne telle pas ?

On peut charger une image en mode conception ou dans le code:

(L' objet de la Classe Image charge une image d' fichier puis l' un affecte la proprit Image.)

Car, dans la premire syntaxe la premire utilisation du mot image est pour une proprit du PictureBox et la seconde utilisation du mot image reprsente la classe Image. Comment effacer une image?

PictureBox1.Image.FromFile("vcar1.gif")

If Not (PictureBox1.Image Is Nothing) Then PictureBox1.Image.Dispose() destructeur (pour lobjet image affect la proprit image) PictureBox1.Image = Nothing Rinitialisation de la valeur par dfaut de la proprit Image (Proprit Image Null) End If
Classe Image Les objets de la Classe Image ont, comme d' habitude, des proprits et des mthodes.

La mthode RotateFlip permet par exemple d' effectuer une rotation de l' image; quand on tape le code, VB donne automatiquement la liste des paramtres possible.

PictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipX)
La mthode Save sauvegarde l' image dans un fichier.

PictureBox1.Image.Save("c:\image.bmp")
Noter bien que le nom de l' extension suffit imposer le format de l' image. On peut charger une image .GIF puis la sauvegarder en .BMP Il y a bien d' autres proprits grant les dimensions, la palette de l' image. Le contrle ImageList sert de containeur image, c' une collection d' est images. Les images qu' il contient seront utilises par d' autres contrles (PictureBox, Listview, TreeView, Button....). Il n' est pas visible en excution. En conception il apparat en bas sous la fentre. A droite figurent ses proprits, en particulier, la collection Images qui contient les images et la proprit TransparentColor qui indique la couleur qui doit tre transparent, c' dire non visible. est

Cours Visual Basic.net 66

MONNY Maxime

Page 41 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Si je clique sur le bouton en face de Images, l' diteur de collections d' image s' ouvre.

On peut ajouter des images avec le bouton ' Ajouter'L' . ImageList est ainsi charge. Ensuite pour utiliser une image de l' ImageList dans un autre contrle, il faut modifier les proprits de cet autre contrle (un bouton par exemple). La proprit ImageList du bouton doit contenir le nom du contrle imageList et ImageIndex du bouton doit contenir l' index de l' image dans l' imageList.

btOk.ImageList = imagelist1 btOk.ImageIndex = 2

Un ImageList peut aussi tre charge par code:

imageList1.Images.Add(Image.FromFile(NomImage))

imageList1.Images.Add(Image.FromFile(imageToLoad), CouleurTransparente) imageList1.ImageSize = New Size(255, 255) imageList1.TransparentColor = Color.White


Cours Visual Basic.net 66 MONNY Maxime La taille des images peuvent aussi tre modifie par code:

On ajoute la collection Images une image venant d' fichier nomm NomImage. un On peut surcharg la mthode Add en fournissant en plus la couleur transparente.

Page 42 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

5. Langage Visual Basic


5.1. String
Il faut dclarer une variable avant de lutiliser, pour cela on utilise linstruction DIM

Dim Str As String

Dclare une variable nomme Str

Cette variable peut tre utilise pour conserver une chane de caractre. Dans ce cas, on fait une affectation.

Str= "TOTO"
On peut afficher le contenu de la chane dans un label (zone prsente dans une fentre et ou on peut afficher du texte) par exemple :

Label.text = Str

Remarquons que pour dfinir une chane de caractres il faut utiliser des " " : Ce qui est entre " et " est la chane de caractres. On parle de chane littrale: (une reprsentation textuelle d' une valeur particulire) Aprs avoir t cre une String contient NOTHING et non pas une chane vide (""), il faudra l' initialiser pour qu' contienne quelque chose. elle

Dim Str As String Str= "" Str= "TOTO"

'Str contient Nothing 'Str contient "" : chane vide 'Str contient "TOTO"

Si je veux inclure un caractre " dans la chane il faut le doubler pour qu' ne soit pas considrer il comme caractre de fin de chane:

Str="Bonjour""TOTO""" 'Afficher cela donne : Dim Chane as string = "Toto" Dim x, y, z As String

Bonjour "TOTO"

On peut initialiser la variable en mme temps quon la dimensionne. On peut dimensionner plusieurs variables d' mme type sur une mme ligne. un

'Dimensionner 3 variables string

Proprits / Mthodes Les Variables ' chane de caractres' sont des objets ' STRING' Le type String (Chane de . caractres) est une Classe qui a des mthodes. Pas besoin de connatre toutes les mthodes, il suffit (Aprs dclaration de la String par DIM Str AS String) de taper Str. .Et vous voyez apparatre toutes les proprits et mthodes :

.Split .StarsWith .. .ToUpper .Trim

Cours Visual Basic.net 66

MONNY Maxime

Page 43 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

.ToUpper

Str=Str.ToUpper() Si Str contenait "abc", il contiendra "ABC"


Transforme par contre la chane en minuscule. Les intrts de ces deux fonctions sont multiple : pour la mise en page mais aussi quand on doit comparer 2 string pour savoir si elle sont gales, la premire a t saisie par lutilisateur et je ne sais pas si lutilisateur a tap en majuscule ou en minuscules. Si je compare A = "Vb" et B= "vb" elles sont diffrentes. Si je compare A.ToLower et B.ToLower elles sont gales.

Mettre en majuscules une chane de caractre

.ToLower

.Trim

Dim A As String = "#@Informatique@#" Dim B As Char() = {"#", "@"} A=A.Trim(B)'Donne A= "Informatique"

Permet de supprimer des caractres en dbut et fin de chane.

Attention : Bien utiliser Char() qui est un tableau de caractres pour dfinir les caractres supprimer. Dim B As string= "#@" est dconseill car produisant des rsultats curieux. On peut la rigueur utiliser les String pour un seul caractre. Pour enlever les espaces avant et aprs la chane (Cas le plus frquent) :

A=A.Trim(" ") Il existe aussi StartTrim et EndTrim pour agir seulement sur le dbut ou la fin de la chane. .Length
Taille dune chane en nombre de caractre.

Dim S as String= "VB" MessageBox.Show(S.Length.ToString) Affiche 2 .Concat


Concatnation de plusieurs chane : mise bout bout : Vous pouvez aussi utiliser loprateur de concatnation : S=A&B (S=A+B marche mais est dconseill)

S = String.Concat(A,B)

.Insert

Dim S as string= "VisualBasic" S= A.Insert(6," " ) Donne S= "Visual .Replace

Insre une chane dans une autre.

Basic"

Dim S as string= "Visual_Basic" S= S.Replace("_"," " ) Donne S= "Visual

Remplace partout dans une chane de dpart, une chane par une autre.

Basic"

Dim LaDate as string= "12.02.1990" LaDate= LaDate.Replace(".","/" ) Donne S= "12/02/1990" .Split


Dcoupe en plusieurs sous Chanes une chane de dpart, cela par rapport un sparateur.

Dim S as string= "Philippe;Jean ;Toto" Dim Separateur as Char = ";" Dim Nom() as String Tableau de String
Cours Visual Basic.net 66

MONNY Maxime

Page 44 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Nom=S.Split(Separateur)
Donne :

Remarque: Quand on dimensionne Nom(), on ne donne pas le nombre d' lment, c' Split qui est cre autant d' lment qu' faut. il Indique le numro du caractre, la position (la premire occurrence) ou une chane chercher est trouve dans une autre.

Nom(0)= Philippe Nom(1)= Jean Nom(2)= Toto

.IndexOf .LastIndexOf

Dim A as String= "LDF.EXE" Dim chrPoint as Char()={"."} Dim chrE as Char()={"."} A.IndexOf(chrPoint) retourne 3 (la numrotation commence 0) A.LastIndexOf(chrE) retourne la dernire occurrence du E = 6 .Compare
Compare 2 chanes :

String.Compare(a,b)
Retourne un entier Ngatif si a<b 0 si a=b Positif si a>b

.Substring

Dim A as string= "Informatique" MessageBox.show(A.Substring(2,3)) Affiche .Char

Extrait une partie dune chane

for

Dim maString As String = "ABCDE" Dim monChar As Char monChar = maString.Chars(3) 'monChar = "D"

Une chane peut tre perue comme un tableau de caractres (instances Char) ; vous pouvez extraire un caractre particulier en faisant rfrence l' index de ce caractre par l' intermdiaire de la proprit Chars. Par exemple :

5.2. Variables numriques


Une variable numrique peut contenir des donnes numriques. Une variable numrique peut tre entire:

mais aussi, une variable peut tre relle (avec virgule)

Integer (entier) Short (entier court) Long (Entier long) Byte (entier de 0 255)

Single (virgule flottante simple prcision) Double (virgule flottante double prcision) Decimal (virgule fixe haute prcision)

On dclare une variable numrique avec DIM, on peut linitialiser en mme temps :

Dim i as Integer= 3
Cours Visual Basic.net 66

MONNY Maxime

Page 45 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Si la variable est numrique, il faut la transformer en String avant de lafficher :

Dim I As Integer=12 Label.text = I.ToString

.ToString fait partie des mthodes. Il y en a d' autres: .GetType retourne le type de la variable Dim i As Integer Label1.Text = i.GetType.ToString

'Affiche: System.Int32

.MaxValue .MinValue donne le plus grand et le plus petit nombre possible dans le type de variable. On verra quon peut utiliser des oprateurs + - * / . Dim I As Integer = 2 Dim J As Integer J=I+3 J sera gal 5 car on affecte J la valeur I+3 On rappelle que le sparateur est le point :

J=1.2 veut dire

J=1,2 en bon franais !!

Il existe des fonctions mathmatiques. Pour quelles soient disponibles il faut dabord importer lespace de nom Import System.Math

Dim N As Single Dim R As Single R=Abs(N) retourne la valeur absolu Si N=-1.2 R=1.2 R=Sign(N) retourne le signe Si N=-1.2 R=-1 (ngatif) ; retourne 1 si nombre positif R=Round(N) retourne le nombre entier le plus proche N=1.7 R=2 N=1.2 R=1 N=1.5 R=2

On peut donner en second paramtre le nombre de digit:Math.Round(Valeur, 2)donnera 2 dcimales aprs la virgule.

R=Floor(N)

retourne N=1.7 R=Ceiling(N)retourne N=1.2 R=Max(2,3) retourne retourne R=Min(2,3) retourne retourne R=Pow(2,3) retourne retourne R=Sqrt(9) retourne retourne

le plus grand entier gal ou infrieur. R=1 le plus petit entier gal ou suprieur R=2 le plus grand des 2 nombres. 3 le plus petit des 2 nombres. 2 2 puissance 3. 8 la racine carr. 3

5.3. Boolens
Cours Visual Basic.net 66 MONNY Maxime Page 46 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Le type de donnes Boolean correspond une valeur non signe interprte comme True ou False. Si une variable est destine ne contenir que des informations de type true/false, yes/no ou on/off, dclarez-la avec un type Boolean. La valeur par dfaut de Boolean est False. Dans l' exemple suivant, RunningVB est une variable de type Boolean qui enregistre une simple valeur yes/no.

Dim bool As Boolean ' par dfaut bool = False If bool = False Then MessageBox.Show("La valeur par dfaut est bien FALSE") End If
Pour rsumer les diffrents types de donnes

Type VB Structure de type CLR Boolean System.Boolean Byte System.Byte Char System.Char Date System.DateTime Decimal System.Decimal

Allocation de stockage nominal 2 octets 1 octet 2 octets 8 octets 16 octets

Plage de valeurs True ou False. 0 255 (non signs). 0 65 535 (non signs). 0:00:00 le 1er janvier 0001 23:59:59 le 31 dcembre 9999. 0 +/-79 228 162 514 264 337 593 543 950 335 sans dcimale ; 0 +/7,9228162514264337593543950335 avec 28 dcimales ; le plus petit nombre diffrent de zro tant +/-0,0000000000000000000000000001 (+/-1E-28). -1,79769313486231E+308 -4,94065645841247E-324 pour les valeurs ngatives ; 4,94065645841247E-324 1,79769313486231E+308 pour les valeurs positives. -2 147 483 648 2 147 483 647. 9 223 372 036 854 775 808 9 223 372 036 854 7 75 807. N'importe quel type peut tre stock dans une variable de type Object. -32 768 32 767. -3,402823E+38 -1,401298E-45 pour les valeurs ngatives ; 1,401298E-45 3,402823E+38 pour les valeurs positives.

Double System.Double (virgule flottante double prcision) Integer System.Int32 Long System.Int64 (entier de type Long) Object System.Object (classe) Short System.Int16 Single System.Single (virgule flottante en simple prcision) String System.String (longueur (classe) variable)

8 octets

4 octets 8 octets

4 octets 2 octets 4 octets

Dpend de la plate- 0 environ 2 milliards de caractres Unicode. forme d'implmentation

Cours Visual Basic.net 66

MONNY Maxime

Page 47 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

5.4. Conversion
On a vu qu' peut afficher les chanes de caractres, on fait des calculs avec les variables on numriques. Lintrt de convertir peut se retrouver si on veut afficher un rsultat numrique. En effet, on ne peut afficher que des String (chane de caractres) dans un label ou un textBox par exemple. Aussi, il faut transformer cette donne numrique en chane avant de lafficher, on le fait avec la mthode .ToString : Label.text = I.ToString

Dim I As Integer=12 ' Conversion String=>numrique : Affiche '12'

A linverse une chane de caractre peut tre transforme en numrique : Par exemple, l' utilisateur saisie un nombre, mais il tape des caractres au clavier et c' cette est chane de caractres qui est retourne, il faut la transformer en numrique.

Dim S as String Dim i as Integer 'Saisie par une InputBox I=Integer.Parse(S)

de la valeur S="45"

Dans cet exemple, on observe que le type Integer qui a une mthode (Parse) qui transforme une chane en entier. CType pour toutes les conversions On peut aussi utiliser, et cest plus simple, CType pour convertir nimporte quel type en nimporte quel type : Il suffit de donner cette fonction la variable modifier et le type obtenir.

I=Ctype(S,Integer)

CType fait toutes les conversions, mais on peut aussi utiliser des fonctions qui sont spcifiques au type de la variable de retour: Le nom de ces fonctions contient le nom du type de la variable de retour.

CBool() CByte() CChar() CDate() CDbl() CDec() CInt() CLng() CObj() CShort() CSng() CStr()

Dim I As Integer=123 Dim D As Double D=CDbl(I) 'donnera D=123

Exemple : CDbl convertit expression et retourne un ' Double' .

D est un Double

Remarque: Il faut faire attention aux conversions de types car cela peut donner de drles de rsultats. Par exemple, les fonctions CInt et CLng devraient arrondir les parties dcimales gales 0,5 au nombre pair le plus proche. Par exemple, 0,5 s' arrondit 0 et 1,5 s' arrondit 2. Bizarre!! Cours Visual Basic.net 66 MONNY Maxime Page 48 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Autre possibilit : la classe System.Convert un La Classe System.Convert permet la conversion d' type de base vers un autre: Quelques Exemples : .ToString exemple : str = System.Convert.ToString(byteVal)

.ToByte Pour convertir un Single en Byte .ToSingle Pour convertir un Byte en Single .ToDecimal en Decimal

On a des mthodes pour pratiquement convertir tous les types et tous les types. Rechercher dans la documentation pour le type qui vous intresse. On verra plus loin, la fonction Format utilise pour convertir les valeurs numriques que vous voulez mettre aux formats dates, heures ou monnaie ou dans d' autres formats dfinis par l' utilisateur.

On utilise la fonction IsNumeric() pour dterminer si le contenu d' variable peut tre valu une comme un nombre, si la conversion est possible. Exemples:

IsNumeric()

Dim MyVar As Object Dim R As Boolean MyVar = "45" R = IsNumeric(MyVar) ' R= True. ' ... MyVar = "678.92" R = IsNumeric(MyVar) ' R= True. ' ... MyVar = "45 Kg" R = IsNumeric(MyVar) ' R= False.

5.5. Les tableaux


Les tableaux permettent de classer des donnes de mme type. Les tableaux vous permettent de faire rfrence un ensemble de variables par le mme nom et d' utiliser un numro, appel index ou indice, pour les distinguer. Comment dclarer un tableau :

Dim Tableau(3) As Integer


Entrane la cration des 3 variables entiers sachant que les index commencent 0.

Noter que comme c' un tableau d' est entiers, juste aprs la cration du tableau les lments sont initialiss 0.

Tableau(1)= 12 affecte le nombre 12 au 2eme lment du tableau.


Un tableau peut avoir plusieurs dimensions :

Dim T(2,2) as integer 3 X 3 lments


Pour un tableau 2 dimensions le premier argument reprsente les lignes, le second les colonnes. 1,1 1,2 1,3 Cours Visual Basic.net 66 MONNY Maxime Page 49 sur

Licence Pro. Rseaux et Tlcommunication 2,1 3,1 2,2 3,2 2,3 3,3

Spcialit CMSII

Il est possible de crer des tableaux 3, 4, etc. dimensions:

Dim T(2,2,2) 3X3X3 lments.


On peut crer des tableaux de tableaux:

Dim T(2),(2) Il a autant d'lment que le tableau T (2,2)


Il est possible de crer des tableaux avec tous les types de variable (y compris les structures) On peut instancier les lments dun tableau lors de sa dclaration :

Dim Mois() As String = {Janvier,Fvrier,Mars}

On verra dans un des exemples que l' peut crer un tableau avec la mthode CreateInstance. on Redim permet de redimensionner un tableau, si on ajoute Preserve les anciennes valeurs seront conserves.

ReDim Preserve Tableau(0 To 4)

Erase efface le tableau et rcupre lespace.


Un tableau est un objet !! Crons 2 tableaux et examinons les principales mthodes.

Attention: il copie les rfrences (ladresse, lendroit ou se trouve la variable) et non pas la valeur de cette variable, ce qui fait que si vous modifiez b(3), a(3) sera aussi modifi. Car lorsque vous assignez une variable tableau une autre, seul le pointeur (ladresse en mmoire) est copi. Pour obtenir une copie indpendante faire :

Dim a(3) As String Dim b(3) As String b=a Copie le tableau a dans b b=a.copy Est quivalent

b=a.clone

Dans ce cas si vous modifi a(2), b(2) ne sera pas modifi. La Classe Array Tous les tableaux viennent de la classe Array; vous pouvez accder aux mthodes et proprits de System.Array de chaque tableau Par exemple, la proprit Rank retourne le nombre de dimension du tableau et la mthode Sort trie ses lments. Exemple : Soit un tableau Mois()

Array.Clear(Mois,0,2) Efface 2 lments partir de llment 0 1, 3) inverse 3 lments partir de

Array.Reverse(Mois, llment 1

Array.Copy(Mois,1,Mois2,1,20) copie 20 lments de Mois Mois2 partir du 2eme lment. Array.sort(Mois) Trie le tableau Mois Equals qui compare 2 tableaux.
Malheureusement cette mthode marche sur des tableaux unidimensionnels uniquement.

Cours Visual Basic.net 66

MONNY Maxime

Page 50 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

IndexOf recherche un objet spcifi dans un tableau unidimensionnel (tri ou non), retourne l' index de la premire occurrence. Dim myIndex As Integer = Array.IndexOf(myArray, myString)
Retourne -1 si l' lment n' pas trouv. est

LastIndexOf fait une recherche partir de la fin. Ubound retourne le plus grand indice disponible pour la dimension indique d' tableau un Dim MonTableau(10, 15, 20) tableau multi-dimensionnel 10x15x20 Indice = UBound(MonTableau, 1) 'Retourne 10 (1=la 1re dimension) Indice = UBound(MonTableau, 2) 'Retourne 15 (2=la 2me dimension) Indice = UBound(MonTableau, 3) 'Retourne 20 (3=la 3me dimension) Length retourne un entier qui reprsente le nombre d' lments dans le tableau.

5.6. Les collections


Fait partie de System.Collections. Plus quune alternative aux tableaux, lobjet collection est une rfrence principalement utilise dans Visual Basic afin d' assurer le suivi de divers lments, tels que tous les contrles d' formulaire (par exemple, la collection Controls). un Par ailleurs, les utilisateurs peuvent crer leurs propres collections afin d' organiser et de manipuler des objets. Une collection fonctionne plutt comme un liste d' lments dans laquelle il est possible dajouter ou denlever un lment nimporte quel endroit sans avoir se proccuper de sa taille ni ou se trouve l' lment. Le nombre d' lment n' pas dfini au dpart comme dans un tableau. Dans une collection il est n' a que les lments que l' a ajouts. y on La particularit des collections rside sur les lments qui sont reprs grce une Cl unique comme les listes et un index comme les tableaux. Les items affiches dans une ListBox donne une ide concrte de ce qu' une collection. est Pour crer une collection d' objets, vous devez premirement crer l' objet Collection.

Dim maCollection As New Collection

Ds que cet objet est cr, vous pouvez ajouter, enlever ou manipuler des lments. Ajout dun lment dans un collection On utilise la syntaxe: NomCollection.Add( lment, Cl)

maCollection.Add("Bonjour", "30") maCollection.Add("Monsieur", "31") maCollection.Add("Et", "32") maCollection.Add("Madame", "33")


Il peut y avoir 2 autres paramtres:

maCollection.Add(strElement, strCl, Before, After) Dim maCollection As New Collection maCollection.Add("Element1", "1") maCollection.Add("Element3", "3", , 1)

Cours Visual Basic.net 66

MONNY Maxime

Page 51 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

maCollection.Add("Element2", "2", 2)Before ou After peuvent tre utiliss pour placer l' lment insrer avant ou aprs un lment de la collection. Si Before ou After est un nombre c' l' est index des lments qui est utilis, si c' une string c' la cl. est est

Attention le premier lment est ici l'lment 1 (l'index va de 1 Count); c'est hrit du VB!!

Label1.Text = maCollection.Item("33")'retourne Madame (llment correspondant la cl 33) Label1.Text = maCollection.Item(4)'retourne Madame aussi (le 4me index)

Extraction d' lments d' une collection La proprit Item permet laccs aux lments de la collection :

Dans la mesure o la proprit Item est la proprit par dfaut d' objet Collection, vous un pouvez l' omettre lorsque vous accdez un lment d' une collection. Il est donc galement possible d' crire les exemples de code prcdents comme suit :

Label1.Text = maCollection("33") Label1.Text = maCollection(4)


Suppression d' lments d' une collection La mthode Remove permet de supprimer un lment d' collection : une L' argument index peut tre l' emplacement de l' lment supprimer ou la cl de l' lment. Vous pouvez donc utiliser l' des deux instructions suivantes pour la suppression dun lment : une

object.Remove(index | key) maCollection.remove("33") maCollection.remove(4)

ArrayList ou la liste dobjets La ArrayList est une collection particulire. Cest une version labore dun tableau. Comme les tableaux, il n' a pas de cl mais un index y la capacit des listes dobjets nest pas fixe elles fournissent des mthodes qui permettent d' ajouter, d' insrer ou de supprimer une srie d' lments. elles sont limites une dimension, pas les tableaux !

Dim L As New ArrayList() On cre une collection ArrayList Dim L As ArrayList = ArrayList.Repeat("A", 5)'On cre collection de 5 lments contenant chacun "A" (on rpte "A")

Attention le premier lment est ici l' lment 0 (l' index va de 0 count-1) ; c' du .NET!! est

une

L.Add("Bonjour") 'On ajoute un lment la collections MessageBox.Show(L(0)) 'ou L.Item(0) : On affiche le 1er lment MessageBox.Show(L.Count.ToString) 'On affiche le nombre dlment. L.Remove("Bonjour") 'On enlve un lment de la liste L.Sort() 'Trie la collection L.Clear() 'Efface tous les lments L.Containts("Bonjour") 'retourne True (la liste contient lment) L.RemoveAt(0) 'On enlve llment 0 de la liste L.Insert(position, aInserer) permet dinsrer un index spcifi InsertRange insre une ArrayList dans une autre ArrayList.
StringCollection ou collection Cours Visual Basic.net 66 MONNY Maxime Page 52 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Mmes fonctionnalits que pour une collection mais limit sur le type chane. Cela pour but doptimiser lexcution.

Dim myCol As New StringCollection() myCol.Add(string)

HashTable ou table de hachage Optimis pour le stockage de paires cl/valeur.

La cl toujours unique permet de retrouver la valeur

Dim H As New Hashtable() H.Add(Cl,Valeur) Ajoute un lment H.Item(Cl) Retourne llment correspondant une cl. H.ContainsKey(Cl) Retourne True si la cl est dans la table.
Queue Collection de type FIFO (First In, First Out) : premier arriv, premier sorti.

Dim myQueue As New Queue() myQueue.DeQueue() supprime et retourne lobjet de dbut de liste myQueue.EnQueue(valeur) ajoute un objet en fin de liste myQueue.Peek() retourne lobjet de dbut sans le supprimer

Dim myStack As New Stack() myStack.Push(valeur) insre un objet en haut de la pile myStack.Pop() enlve et retourne un objet en haut de la pile

Stack ou pile Collection de type LIFO (Last In, First Out) : dernier entr, premier sorti.

On peut utiliser une pile dans un programme pour grer le dplacement de l' utilisateur dans un arbre, les lments en cours sont stocks par Push, pour remonter en chemin inverse, on Pop. Gnralisation de la notion de collection. Certains objets ont une liste de donne, Vb les organise en Collections. Gnralits sur les collections un 1er point : Une collection peut donc faire partie des proprits d' objet. Cours Visual Basic.net 66 MONNY Maxime Page 53 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

On a vu, par exemple, quun TextBox peut contenir du texte, et bien, ce contrle une collection il nomm TextBox1.lines qui contient chaque ligne du texte (s' y en a plusieurs : multiline=true) Autre exemple, les contrles ListBox possde une collection Items dans laquelle sont plac tous les lments contenus dans la liste. Pour ajouter un lment on utilisera la mthode Add() de la collection Items: ListBox.Items.Add( ) Encore plus: chaque formulaire possde une Collections Controls. Il s' d' collection qui agit une contient tous les contrles de ce formulaire. 2me point : Pourquoi le premier lment est 0 ou 1? Le .NET Framework normalise les collections comme tant des collections de base zro (ArrayList par exemple). La classe Collections de Visual Basic sert principalement assurer une compatibilit avec des versions prcdentes et fournit des collections de base 1. 3me point : Les collections font partie de l' espace de nom System.Collections

Imports System.Collections

5.7. Soyons STRICT et EXPLICIT


Option Strict VB est naturellement trs arrangeant. Par dfaut il transforme, quand cest possible, et si ncessaire un type de variable en un autre type. Si je passe un nombre qui est en Double prcision (Double) dans une variable en simple prcision (Single), VB accepte, au risque de perdre de la prcision (sil y a un trs grand nombre de chiffre significatif).

Cela peut tre ennuyeux si cest des calculs prcis et le programmeur ne sen rend pas forcment compte !! Pour viter cela il faut activer lOPTION STRICT ON Pour un projet en cours : Menu Projet > Proprits de Nom de projet. Page de proprits de Langage VB. Proprits communes, gnration. En face de Option Strict, mettre On Pour mettre loption SCTRICT ON par dfaut pour tous les projets Menu Outils > Option Dans Projet puis Valeurs par dfaut VB En face de Option Strict, mettre On Maintenant seules les conversions effectues explicitement seront autorises. Ainsi, S=D est soulign dans le code pour signaler une conversion interdite. (Par contre D=S est accept car on passe d' variable une variable plus prcise) une

Dim D As Double Dim S As Single D=0.123456789 S=D 'affectation dun type vers un autre type diffrent MessageBox.Show(s) 'affiche 0,1234568

S= CType(D,Single) Cela entrane une conversion de la valeur Double en Single ; sil y a perte de prcision, elle se produit quand mme, MAIS le
Cours Visual Basic.net 66 MONNY Maxime Page 54 sur

Il faudra maintenant, pour notre exemple, crire :

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

programmeur SAIT quil y a conversion, CONNAISSANCE DE CAUSE le risque.

il

prendra

ou

pas

EN

Option explicit Pour la dclaration des variables nous avions dit que toute variable utilise devait tre dclare. Par dfaut cest vrai. On pourrait (cest fortement dconseill) mettre cette option Off. Cela ne rendrait plus obligatoire la dclaration des variables. MaVariable=10 sans dclaration pralable serait accepte. Cela prsenterait certains inconvnients : Si on faisait une faute de frappe en tapant le nom dune variable, VB accepterait et crerait une nouvelle variable objet.

Dans ce cas, je crois avoir mis 10 dans MaVariable. En fait jai mis 10 dans une nouvelle variable nomme MaVariabble. Mavariable toujours une valeur=0. Donc, cest clair et sans appel : laissez Option Explicit On. Dans ce cas si vous tapez le nom d' variable non dclare, elle est souligne en bleu. une Option strict et Explicit dans un module On peut aussi indiquer dans un module les options; ces instructions doivent tre tapes avant toutes les autres.

Dim MaVariable MaVariabble=10 Faute de frappe(bb)

Cours Visual Basic.net 66

MONNY Maxime

Page 55 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

5.8. Les constantes


Comme les variables, elles ont un nom et un type, mais leurs valeurs sont constantes. On les dfinit par le mot Const. On peut les initialiser en mme temps.

Const NomFichier= "medical.dic" Const i As Integer =1

constante chane de caractres. constante Integer

Lintrt des constantes est damliorer la lisibilit et damliorer la vitesse dexcution. Si une constante doit tre modifie ultrieurement, il suffit en mode conception, de modifier sa valeur ce qui modifie sa valeur dans lensemble du code de lapplication. On rappelle que seuls les types primitifs peuvent avoir des constantes (Byte, Boolean, Shot, Integer, Long, Single, Double, Decimal, Date, Char, String) Constantes prdfinies Il existe une liste de constante prdfinie dans diffrentes Classes.

On obtient lcran une bote de dialogue avec le texte mis en forme de cette manire: VISUAL BASIC

ControlChars.CrLf = Chr$(13)+Chr$(10) : sert sauter une ligne. MessageBox.Show("VISUAL" & ControlChars.CrLf & "BASIC")

ControlChars.Tab = Chr$(9) : caractre de tabulation ControlChars.NullChar : Aucun caractre ControlChars.Nothing : Chane vide
Taper ControlChars. et, comme dhabitude, vous obtiendrez la liste des constantes. Couleurs On peut aussi utiliser les couleurs dfinies par VB

System.Drawing.Color.Blue

Pour le bleu

Math Si Import System.Math a t tap, PI contient 3,14 E contient la base log naturel Touche du clavier Il est parfois ncessaire de savoir si une touche prcise t tape par l' utilisateur au clavier, pour cela il faut connatre les touches, mais pas besoin de se souvenir du codes des touches, il suffit de taper Keys. et la liste des touches s' affiche. Cliquer sur le nom de la touche recherche et vous obtenez la constante correspondant la touche:

Keys.Right

'Dsigne le code de la touche '->'

True/False On rappelle que True et False sont des valeurs Boolens faisant partie intgrante de VB. Pour les anciens de VB6 ne plus utiliser -1 et 0 (D' ailleurs c' maintenant 1 et 0). est Conclusion : utiliser largement ces constantes fournies par VB, cela amliore la lisibilit et la maintenance.

Cours Visual Basic.net 66

MONNY Maxime

Page 56 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

5.9. Les oprateurs


Action Arithmtique Assignation Comparaison Concatnation Oprations logiques/de bits

^, , *, /, \, Mod, +, = =, ^=, *=, /=, \=, +=, -=, &= =, <>, <, >, <=, >=, Like, Is &, + Not, And, Or, Xor

lment du langage

Rappel sur les oprateurs logiques A And B retourne True si A et B sont vrais A Or B retourne True si une des 2 est vrai A Xor B retourne True si une et une seule est vrai Not A retourne True si A tait faux et vice versa Quelques prcisions

\ Is

Division entire ex : 10\3=3 L' oprateur Is dtermine si deux rfrences d' objet font rfrence au mme objet. Toutefois, il n' effectue pas de comparaisons de valeurs. Si object1 et object2 font tous deux rfrence au mme objet, l' argument result est True ; si tel n' pas le cas, est l' argument result est False.

5.10. Les structures de contrle


5.10.1. Les structures conditionnelles

If...Then...ElseIf...Else

Function Bonus(ByVal Performance Decimal) As Decimal If Performance = 1 Then Return Salary * 0.1 ElseIf Performance = 2 Then Return Salary * 0.09 ElseIf Performance = 3 Then Return Salary * 0.07 Else cas par dfaut Return 0 End If End Function

Prsente le test d' ou de plusieurs conditions Boolean. une

As

Integer,

ByVal

Salary

As

Remarque: dans le cas o le ElsIf est utilis, il est prfrable de remplacer par le SelectCase pour plus de lisibilit

Select...Case

Function Bonus(ByVal Performance Decimal) As Decimal Select Performance Case 1 Return Salary * 0.1
Cours Visual Basic.net 66

Prsente le test des diverses valeurs d' expression unique. une

As

Integer,

ByVal

Salary

As

MONNY Maxime

Page 57 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Case 2 Return Case 3 Return Case Else Return End Select End Function

Salary * 0.09 Salary * 0.07 'Cas par dfaut 0

Try...Catch...Finally

Dim GivenDate As Object 'contient une date rcupre et traiter Dim NextCentury As Date Try NextCentury = DateAdd("yyyy", 100, GivenDate) Catch ThisExcep As System.ArgumentException 'un argument de fonction a une valeur incorrecte Catch ThisExcep As ArgumentOutOfRangeException 'le rsultat est suprieur au 31/12/9999 Catch ThisExcep As InvalidCastException 'GivenDate ne peut tre interprt comme une date Catch 'une exception non gre est apparue Finally 'ce bloc est toujours xecut la fin End Try Function CheckIt (ByVal i As Integer) As String CheckIt = IIf(i > 1000, "Grand chiffre", "Petit chiffre") End Function
5.10.2. Les structures itratives Remarque : la fonction IIF(expression, true, false)

Dcrit le test des diverses exceptions gnres par votre code.

While

Sub exempleWhile() Dim i As Integer = 0 Dim Nombre As Integer = 10 While Nombre > 6 Nombre = Nombre - 1 i = i + 1 End While MsgBox("On na boucl " & i & " fois.") 'i=4 End Sub

Dcrit l' excution d' bloc d' un instructions lorsqu' condition est vraie. une

Dcrit l' excution d' bloc d' un instructions jusqu' ce qu' condition soit satisfaite. une Do..Loop saccompagne toujours de : While : tant que Ou Until : jusqu ce que Autre subtilit de cette structure, la condition peut tre mise en fin de boucle, cela permet deffectuer au moins une fois le code avant le premier test. Cours Visual Basic.net 66 MONNY Maxime Page 58 sur

Do...Loop

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Do Until MotCherch=MotPoint Pointer Mot suivant Loop Do Until MotCherch=MotPoint Pointer Mot suivant Loop Do While MotCherch<>MotPoint Pointer Mot suivant Loop Do Pointer Mot suivant Loop While MotCherch<>MotPoint

Voici donc un exemple des diffrentes possibilits en prenant le cas dun recherche dun mot :

Dcrit l' excution d' bloc d' un instructions un nombre spcifi de fois. Voici son prototype:

For...Next = pour les tableaux

For counter [ As datatype ] = start To end [ Step step ] ' code a executer Next [ counter ]
Et un exemple :

Sub Preset(ByRef tab() As Integer) Dim I As Integer For I = 0 To (tab.Lenght 1) tab(I) = 128 Next I End Sub

For Each...Next = pour les collections

Dcrit l' excution d' bloc d' un instructions pour chaque lment d' collection. une

For Each elementvariable [ As datatype ] In collection ' code a executer Next [ elementvariable ] Dim ThisControl As System.Windows.Forms.Control For Each ThisControl In ThisForm.Controls ThisControl.BackColor = System.Drawing.Color.black Next ThisControl
Exemple : mettre tous les arrires plans des contrles de la feuille en noir

5.11. Rappel sur les procdures


Quand on appelle une procdure (un sous-programme, une routine), le logiciel saute au sousprogramme, il effectue celui-ci puis revient effectuer ce qui suit lappel. Nous avons dj vu, quen VB, les sous programmes sont des Sub ou des Function.

Function Carr ( V as Single) as Single Return V*V End Function


Cette fonction retournera le carr du paramtre fournie. Cours Visual Basic.net 66

On peut fournir aux sous-programmes des paramtres qui sont envoyez la fonction. Exemple:

MONNY Maxime

Page 59 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Dim resultat as Single resultat= carr(2) 'resultat est alors gal 4


On appelle la fonction carr avec le paramtre 2, elle retourne 4. Les parenthses. Rappel, mme s' n' a pas de paramtre, mettre des () lors de l' il y appel de procdure.

Pour l' utiliser :

MaRoutine()

Passage par Valeur ou par Rfrence ATTENTION: Pas dfaut les paramtres sont transmis PAR VALEUR Il y a 2 manires denvoyer des paramtres : Par valeur : (By Val) cest la valeur, le contenu de la variable qui est envoy. Par rfrence :(By Ref) cest ladresse (le lieu physique o se trouve la variable) qui est envoy. Si la Sub modifie la variable, cette modification sera visible dans la procdure appelante aprs le retour. Exemple de procdures:

Sub MaProcedure (ByRef x as Long, Optional ByVal y As Long) End Sub Si j' appelle cette procdure par MaProcedure (A, B) c' l' est adresse de A qui sera envoye et la valeur contenue dans B. Elles se retrouveront dans les variables x et y de la procdure MaProcedure. Vous remarquerez quun argument dune procdure peut tre optionnel (optional).

5.12. Porte des variables


Quand on dclare une variable, jusquo est-elle visible? Dans les procdures Variable locale Si on dclare une variable dans une procdure, elle est visible uniquement dans cette procdure, c' une variable locale: est

Sub MaProcedure (ByRef X As Integer) Dim Y as integer ... End sub Aprs le End Sub, Y (et X aussi) nest plus accessible, la variable est dtruite.

Variable statique Une variable est dite Statique si, a la sortie de la procdure, la valeur continue d' exister et garde sa valeur. Ainsi, lors des appels ultrieurs de la procdure, on retrouvera la valeur de la variable.

A chaque appel de cette procdure A aura la valeur 0 puis 1 puis disparatra. B prendra les valeurs 0, puis 1, puis 2... (Incrmentation chaque appel)

Sub compteur() Dim A as integer Static B as integer A +=1 B +=1 End sub

Cours Visual Basic.net 66

MONNY Maxime

Page 60 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Dans un bloc d' instruction Variable locale uniquement Si vous dclar une variable dans un bloc, elle ne sera visible que dans ce bloc:

Do

Loop

Dim Compteur A integer Compteur +=1 ...

La variable Compteur existe uniquement entre Do et Loop. A chaque itration, la variable est recre chaque fois

Dans la section dclaration d' module, dune fentre, dun formulaire un Variable prive En remplaant Dim par Private; dans ce cas la variable est propre au module ou au formulaire, elle est visible dans toutes les procdures du module ou du formulaire mais pas dans les autres. Variable publique En remplaant Dim par Public; dans ce cas la variable est accessible dans la totalit du programme.

Dans l' exemple ci dessus: MaVariable est visible dans le formulaire et hors du formulaire condition d' utiliser

NomFormulaire.MaVariable. MaVariable2 est visible dans le formulaire. MaVariable3 n' visible que dans la procdure Button1_Click. est

En pratique Pour se reprer et se souvenir quelle est la porte d' variable, on utilise une lettre en dbut du une nom de la variable: g_MaVariable sera public (g comme global). m_Variable2 sera accessible au niveau du module. Dans un module standard, on met toutes les variables Public accessibles par tous. Leurs noms dbutent par g. Ce sont les variables (et constantes) gnrales utilises dans la totalit de l' application: tat du programme, utilisateur en cours...

5.13. Rfrences et espaces de noms


Pour utiliser un objet en VB, il faut : Que la DLL correspondante soit charge dans le projet en tant que rfrence. Exemple de DLL : System.dll

Cours Visual Basic.net 66

MONNY Maxime

Page 61 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Que l' espace de nom soit import. Une DDL contient, en gnral, plusieurs des classes d' objet. Pour utiliser une classe, il faut l' inclure dans le programme. On va, par exemple, importer l' espace de nom System.Windows.Forms (contenue dans System.dll. Cet espace de noms contient les classes fentre et contrles ): Exemple dimportation : Import System.Windows.Forms

Une fois la rfrence faite au projet

Dim Form1 As Form


utiliser une mthode de cet objet:

Form1 est donc un objet fentre qui hrite de tous les membres de la classe Form, on peut donc Form1.Show()
Ou une proprit:

Form1.BackColor=RED
Remarque : les Classes les plus courantes sont dj charges et disponible, ce qui simplifie un peu les choses.

5.14. Architecture du Framework .NET


Visual Studio .NET repose prsent sur une toute nouvelle plate-forme que le nomme Framework .NET . Cette plate-forme apporte un lot important de solutions innovantes : tout est objet (et il supporte dsormais lhritage) multi plateformes multi langages Pour mieux comprendre ces volutions, il est ncessaire de comprendre larchitecture du framework .NET :

Cours Visual Basic.net 66

MONNY Maxime

Page 62 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Visual Studio .NET

VB.NET

C#

C++

Jscript

MSIL ou IL (MicroSoft Intermediate Langage)

Type dapplication (WindowsForm ou WebForm)

Les classe de bases (spcifiques la plateforme : windows, web, ppc, smartphone)

CLR (Common Langage Runtime)

Figure : Architecture du Framework .NET Description de larchitecture Framework.NET 1re couche : lenvironnement de dveloppement Visual Studio .NET qui fournit tous les outils de dveloppement. Il intgre la fois Visual Basic .NET pour le dveloppement dapplications traditionnelles et le dveloppement dapplications destination du Web. 2me couche : le langage de programmation : il existe dj plus dune trentaine de langages compatibles avec le Framework .NET 3me couche : le langage IL : pseudo code intermdiaire avant ltape de compilation. 4me couche : une application se compose toujours de fentres. Pour les plateformes Windows, PPC ou mme smartphone, le type utilis est le Windows Form. Pour une plateforme Web, cest le Web Form. 5me couche : les classe de bases sont spcifiques la plateforme. Par exemple, il existe une classe Windows Form pour les applications Windows mais il existe aussi une classe Windows Form spcifique au PocketPC. 6me couche : Le Common Langage Runtime ou CLR : il prend en charge la compilation, puis lexcution des programmes en intgrant la gestion de lallocation de mmoire avec le Garbage Collector.

Le Garbage Collector Ou le ramasse-miettes en franais. Il est l pour palier aux fuites de mmoires qui restent un grand classique des problmes que lon rencontre en programmation. Il sagit par exemple, despaces allous en mmoire et qui ne sont plus utiliss ou encore de rfrences qui demeurent actives sur des objets dont on ne sert plus.

Cours Visual Basic.net 66

MONNY Maxime

Page 63 sur

Licence Pro. Rseaux et Tlcommunication

Spcialit CMSII

Pour rsoudre ce problme, le Framework .NET a t dot dun mcanisme nomm Garbage Collector qui se charge de scruter la mmoire utilise par les applications .NET et de la rcuprer pour la rallou automatiquement.

5.15. Module de classe


On a vu qu' existait des classes prdfinies (celle du Framework par exemple) mais on peut soi il mme CREER SES PROPRES CLASSES: Prenons un exemple, on veut crer une classe Voiture.

Public Class Voiture 'pour avoir une destruction deterministe lors dun Dispose() Implements System.IDisposable 'dfinition des attributs de la classe Private m_marque As String 'constructeur sans arguments Public Sub New() m_marque = End Sub 'constructeur surcharg Public Sub New(ByVal strMarque As String) If strMarque.Length > 0 Then m_marque = strMarque End If End Sub 'def d'une proprit de la classe pour acceder un attribut Public Property marque() As String Get Return m_marque End Get Set(ByVal Value As String) If Value.Length > 0 Then m_marque = Value End If End Set End Property 'Exemple dune methode Public Function maMethode() As monType 'code de la fonction End Function

'destructeur implicite (appel la l'arrt de l'application) Protected Overrides Sub finalize() Dispose() End Sub 'destructeur explicite ET dterministe Public Sub Dispose() Implements System.IDisposable.Dispose m_marque = Nothing End Sub End Class
Cours Visual Basic.net 66 MONNY Maxime Page 64 sur

Licence Pro. Rseaux et Tlcommunication Rappel: lors de limplmentation dune classe, trios choses penser: Le(s) constructeur(s) Les accesseurs aux attributs de la classe Le(s) destructeur(s)

Spcialit CMSII

Pour la construction, plusieurs constructeurs peuvent se surcharger dans le cas ou vous voulez dfinir votre objet plus ou moins prcisment (avec plus ou moins de proprits) Les accesseurs permettent laccs aux attributs privs (ou protected pour lhritage) de votre objet. Ils peuvent permettre seulement laccs la valeur (Get) ou la modification de cette valeur (Set), ou mme encore les deux la fois. Concernant la destruction, 2 diffrents moments dexcution sont grs dans VB.net : finalize() : le destructeur implicite qui sexcute automatiquement lors de larrt de lapplication dispose() : le destructeur explicite utilis par le programmeur pour pouvoir dtruire son objet a tout moment dans lexcution de lapplication Remarque : par dfaut, a lappel de ce destructeur, la destruction nest pas immdiate, elle est indtermine, cest--dire que lon ne sest pas rellement quel moment cela va se produire. Limplmentation de linterface IDisposable permet de rendre dterministe cette destruction et donc de mieux matriser la gestion mmoire. Rappel : une interface est une classe qui contient simplement la dfinition de ses membres, mais pas leur implmentation.

Public Interface IMultimedia Property Titre() As String Sub Lecture() End Interface Public Class CDAudio Implements IMultimedia Public Sub Lecture() Implements _ NomProjet.IMultimedia.Lecture implementation de la mthode End Sub Public Property Titre() As String Get Return m_titre End Get Set(ByVal Value As String) m_titre = Value End Set End Property End Class
Cela permet davoir un squelette commun de dveloppement pour toutes les classes utilisant cette interface et ainsi avoir des outils communs pour diffrents types dobjets qui se ressemblent. Dans notre exemple, tous les objets Multimdia (CDAudio, Film, DVD, etc) ont un titre et peuvent tre lu.

Cours Visual Basic.net 66

MONNY Maxime

Page 65 sur

Licence Pro. Rseaux et Tlcommunication Rappel sur lHritage

Spcialit CMSII

Lhritage offre la capacit dtendre une classe dj existante, en lui ajoutant des fonctionnalits, des mthodes, ou des attributs. Il devient donc possible, grce lhritage, de crer de nouvelles classes, tout en r exploitant les classes dj cres, et ceci, en vitant une recopie complte. Une classe, qui hrite dune autre classe, se spcialise par rapport sa classe mre. Comme exemple, on pourrait donner le suivant :

Class VEHICULE

Class 4x4

Class BERLINE

Class CABRIOLET

Class VEHICULE Protected m_marque Dclaration attribut PROTECTED Overridable Sub Roule() Mthode pouvant tre redfinie End Sub End Class

Class BERLINE Inherits VEHICULE Private m_couleurCapote Public Sub New(ByVal strMarque as string, _ ByVal strCouleurCapote as string) Me.m_couleurCapote = strCouleurCapote Me.m_marque = strMarque utilisation classique de la proprit de la classe mre End Sub Overrides Sub Roule()Mthode redfinie ds cette classe fille End Sub End Class
Cours Visual Basic.net 66 MONNY Maxime Page 66 sur

S-ar putea să vă placă și