Documente Academic
Documente Profesional
Documente Cultură
. 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
MONNY Maxime
Page 2 sur 66
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..
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
Spcialit CMSII
Enfin, le confort dun grand cran vous semblera indispensable quand vous vous confrontez au grand nombre de fentres.
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 !
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.
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.
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
MONNY Maxime
Page 6 sur 66
Spcialit CMSII
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.
MONNY Maxime
Page 7 sur 66
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.
MONNY Maxime
Page 8 sur 66
Spcialit CMSII
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
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.
MONNY Maxime
Page 10 sur
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
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.
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 :
MONNY Maxime
Page 12 sur
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
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 ...
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
MONNY Maxime
Page 13 sur
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 :
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
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
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.
MONNY Maxime
Page 16 sur
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'
MONNY Maxime
Page 17 sur
Spcialit CMSII
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.
MONNY Maxime
Page 18 sur
Spcialit CMSII
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.
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
MONNY Maxime
Page 20 sur
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 :
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.
MONNY Maxime
Page 21 sur
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
btnOk.visible = False
ButtonOk.ForeColor=
System.Drawing.Color.Blue
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
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.
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
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.
MONNY Maxime
Page 23 sur
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
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.
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.
Name est utilis pour lui donner un nom explicite (BoutonOk BoutonCancel) FlatStyle donne un aspect au 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
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.
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
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.
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:
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()
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
MONNY Maxime
Page 28 sur
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 :
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
Spcialit CMSII
- Comment connatre l'index de l'lment que l'on vient d'ajouter? (et le slectionner)
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.
MONNY Maxime
Page 30 sur
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
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 :
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
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 :
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
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()
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
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
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
Spcialit CMSII
Exemple :
MONNY Maxime
Page 36 sur
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
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.
MONNY Maxime
Page 37 sur
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.
Form1.Activate()
Dans ce cas l' vnement Form1_Activated survient. Lvnement Form1_Deactivated est dclench quand la fentre perd le focus.
TxtNom.Select() dedans.
'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
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.
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:
MONNY Maxime
Page 39 sur
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
Spcialit CMSII
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 ?
(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
MONNY Maxime
Page 41 sur
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.
imageList1.Images.Add(Image.FromFile(NomImage))
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
Spcialit CMSII
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
'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
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 :
MONNY Maxime
Page 43 sur
Spcialit CMSII
.ToUpper
.ToLower
.Trim
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.
S = String.Concat(A,B)
.Insert
Basic"
Remplace partout dans une chane de dpart, une chane par une autre.
Basic"
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
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.
.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
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 :
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
Spcialit CMSII
.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 :
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
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
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
MONNY Maxime
Page 47 sur
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
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.
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()
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
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.
Noter que comme c' un tableau d' est entiers, juste aprs la cration du tableau les lments sont initialiss 0.
Licence Pro. Rseaux et Tlcommunication 2,1 3,1 2,2 3,2 2,3 3,3
Spcialit CMSII
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.
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.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.
MONNY Maxime
Page 50 sur
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.
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(strElement, strCl, Before, After) Dim maCollection As New Collection maCollection.Add("Element1", "1") maCollection.Add("Element3", "3", , 1)
MONNY Maxime
Page 51 sur
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 :
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
Spcialit CMSII
Mmes fonctionnalits que pour une collection mais limit sur le type chane. Cela pour but doptimiser lexcution.
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
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
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
Spcialit CMSII
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.
MONNY Maxime
Page 55 sur
Spcialit CMSII
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
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.
MONNY Maxime
Page 56 sur
Spcialit CMSII
^, , *, /, \, 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.
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
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
As
Integer,
ByVal
Salary
As
MONNY Maxime
Page 57 sur
Spcialit CMSII
Case 2 Return Case 3 Return Case Else Return End Select End Function
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)
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
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 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
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
On peut fournir aux sous-programmes des paramtres qui sont envoyez la fonction. Exemple:
MONNY Maxime
Page 59 sur
Spcialit CMSII
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).
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
MONNY Maxime
Page 60 sur
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
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...
MONNY Maxime
Page 61 sur
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
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.
MONNY Maxime
Page 62 sur
Spcialit CMSII
VB.NET
C#
C++
Jscript
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.
MONNY Maxime
Page 63 sur
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.
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.
MONNY Maxime
Page 65 sur
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