Académique Documents
Professionnel Documents
Culture Documents
..................................................................................................................................................................................1 TRAVAUX PRATIQUES PRISE EN MAIN DE VISUAL BASIC 2005.......................................................1 1) CAHIER DES CHARGES, ANALYSE ET CRATION DU PROJET WINDOWS SOUS VISUAL STUDIO 2005.....................................3 1.1) Cahier des charges...................................................................................................................................3 1.2) Analyse......................................................................................................................................................4 1.3) Cration du projet Windows sous Visual Studio 2005.............................................................................5 2) ELABORATION DE LA COUCHE MTIER.......................................................................................................................7 2.1) Cration classe Contact via le diagramme de classe.........................................................................7 2.2) Parcours du code gnr et adaptation du constructeur..........................................................................8 2.3) Collection abstraite Contacts .............................................................................................................9 3) PRPARATION DE LA COUCHE DE GESTION DES DONNES AVEC STOCKAGE XML...........................................................10 3.1) Mise en place dune interface IStoreData ........................................................................................10 3.2) Chemin physique du fichier XML centralis dans le Settings du projet.................................................11 3.3) Elaboration de la classe XML et initiation aux mthodes de srialisation dobjets..............................12 4) CONSTRUCTION DES INTERFACES UTILISATEURS........................................................................................................14 4.1) Menu du formulaire principal.................................................................................................................14 4.2) Cration des contrles utilisateurs et liaison avec le menu...................................................................15 4.3) Cration dun DataSource li notre objet Contact ........................................................................17 4.4) Gnration du formulaire Contact partir de notre DataSource et analyse du code gnr par le Designer de Visual Studio 2005.....................................................................................................................19 4.5) Liaison du DataSource au contrle DataBinding et mise jour dans le fichier XML...........................21 4.6) Contrle de saisi utilisateur et expression rgulire..............................................................................22 CONCLUSION ..........................................................................................................................................................23
1) Cahier des charges, analyse et cration du projet Windows sous Visual Studio 2005
1.1) Cahier des charges
Objectif : Raliser une application Windows Gestion de contacts . Interfaces graphiques : - Formulaire principal de bienvenue - Avoir un menu Fichier avec les sous-menus : o Liste des contacts : accs au listing des contacts o Fiche contact : accs en mode dition la fiche des contacts o Fermer : quitter lapplication - Pouvoir ajouter et modifier des fiches de contact - Afficher une liste des contacts Stockage des donnes : - Stockage des donnes dans un fichier XML - Stockage des donnes dans une base de donnes SQL Server 2005
1.2) Analyse
Nous allons laborer notre projet dans une architecture 3-Tiers : Couche mtier : o Contact : entit mtier o Contacts : classe abstraite comprenant collection dobjet Contact et qui implmente linterface IStoreData Couche daccs aux donnes : o IStoreData : interface de gestion des donnes LoadData SaveData o ContactStoreXML : classe qui hrite de Contacts grant le stockage des objets dans un fichier XML. o ContactStoreSQL : classe qui hrite de Contacts grant le stockage des objets dans une base de donnes SQLServer 2005. Interfaces graphiques : o 1 Formulaire principal avec le menu o 1 Contrle Utilisateur pour la fiche contact o 1 Contrle Utilisateur pour la liste des contacts
Nommez-le projet GestionContacts (automatiquement la solution portera le mme nom). Il sera enregistr dans votre emplacement par dfaut du stockage des projets VS2005. Si vous conservez loption Create directory for solution ; VS2005 crera automatiquement larborescence suivante : Solution Name \ Solution Name.sln Solution Name \Name \ Name.vbproj Dans le cas o loption est dcoche, les fichiers solution porteront le mme nom que le projet et seront directement sauvegarder dans le rpertoire du projet. Larborescence dans lemplacement final sera la suivante : Name \ Name.sln Name \ Name.vbproj Si vous utilisez une base de contrle de code source pour centraliser vos projets, vous pouvez cocher loption Add to Source Control si vous dsirez y ajouter directement notre projet. Une fois le projet crait, un formulaire Form1 est cr par dfaut. Faites click droit sur celui-ci Rename est nomm le FormMain.vb .
Au niveau de linterface de travail, vous pouvez apercevoir ce formulaire ouvert en mode Design . Nous allons renommer lentte du formulaire. Pour cela, slectionnez-le et affichez ces proprits (click droit Properties ou raccourci F4 ) puis saisissez dans sa proprit Text : Gestion des contacts . A prsent, nous devons avoir laperu suivant :
Propertie
Method Constructor
Ajoutons sur notre constructeur laffectation de la variable m_ID (qui fait office didentifiant unique). Lorsquun nouvel objet Contact sera crer on va affecter automatiquement la variable m_ID un nouveau GUID gnr.
Sub New() m_ID = System.Guid.NewGuid End Sub
Remarquez quon aurait pu galement faire appel la proprit ID (ID = System.Guid.NewGuid) pour laffectation indirecte de la variable m_ID (dans le Set Property).
10
Aprs enregistrement, vous pouvez vrifier dans le ficher app.config (le fichier de configuration du projet Windows) la prsence de ces lignes de code suivante (gnres automatiquement depuis les renseignements saisi sur longlet Setting ) :
<GestionContacts.My.MySettings> <setting name="FileContactsXML" serializeAs="String"> <value>C:\Contacts.xml</value> </setting> </GestionContacts.My.MySettings>
Laccs la variable se fait alors via la commande : My.Settings.FileContactsXML (ici renverra donc la valeur C:\Contacts.xml ).
11
L'ide est donc douvrir un flux en criture sur notre fichier XML :
Dim streamIO As StreamWriter = Nothing streamIO = New StreamWriter(My.Settings.FileContactsXML)
La srialisation peut seffectuer grce un objet Serialization.XmlSerializer. Ce dernier prend un type lors de son instanciation, donc ici en loccurrence notre type ContactsStoreXML et la mthode dexcution du processus (Serialize) attend un StreamWriter pour crire dans le fichier cible et lobjet srialiser :
serialXML = New Serialization.XmlSerializer(GetType(ContactsStoreXML)) serialXML.Serialize(streamIO, Me)
Remarque importante : A la fin, noublions de fermer le flux en criture pour librer laccs au fichier. Au final, nous obtenons la mthode suivante :
Public Overrides Sub SaveData() ' Dclaration Dim serialXML As Serialization.XmlSerializer = Nothing Dim streamIO As StreamWriter = Nothing Try serialXML = New Serialization.XmlSerializer(GetType(ContactsStoreXML)) ' Ouverture d'un flux en criture sur le fichier XML des contacts streamIO = New StreamWriter(My.Settings.FileContactsXML) ' Srialisation de la liste des contacts serialXML.Serialize(streamIO, Me)
12
Catch ex As Exception ' Propagrer l'exception Throw ex Finally ' En cas d'erreur, n'oublier pas de fermer le flux en criture si ce dernier est toujours ouvert If streamIO IsNot Nothing Then streamIO.Close() End If End Try End Sub
La d srialisation nest pas plus compliqu que la srialisation. On ouvre un flux en lecture sur le fichier XML : On dclarer un Serialization.XmlSerializer, instanci avec le type attendu GetType(ContactsStoreXML). Puis on fait appel la mthode pour Deserialize pour lancer le processus de dsrialiser de l'objet. Ce dernier prend en paramtre que le flux en lecture. La seule subtilit ici cest que la mthode Deserialize retourne un type System.Objet, quil faut donc typer en ContactsStoreXML laide de la fonction DirectCast. Au final, nous obtenons le code suivant :
Public Overrides Sub LoadData() ' Dclaration Dim streamIO As StreamReader = Nothing Dim serialXML As Serialization.XmlSerializer = Nothing Try ' Tester l'existance du fichier If System.IO.File.Exists(My.Settings.FileContactsXML) = True Then serialXML = New Serialization.XmlSerializer(GetType(ContactsStoreXML)) ' Ouverture d'un flux en lecture sur le fichier XML des contacts streamIO = New StreamReader(My.Settings.FileContactsXML) ' Dsrialisation de la liste des contacts Me.ListContacts = DirectCast(serialXML.Deserialize(streamIO), ContactsStoreXML).ListContacts End If Catch ex As Exception ' Propagrer l'exception Throw ex Finally ' En cas d'erreur, n'oublier pas de fermer le flux en lecture si ce dernier est toujours ouvert If streamIO IsNot Nothing Then streamIO.Close() End If End Try End Sub
13
14
A laide des 2 listes prsentent sur la partie suprieure, slectionnez sur la liste de gauche FormMain Events ; automatiquement la liste de droite chargent les vnements disponible. Choisissez lvnement Load pour gnrer lentte de la mthode.
15
ToolStripContainer1.ContentPanel.Controls.Add(ucFiche)
On procde de mme pour ucListe Il ne nous reste plus qu crire le code qui va bien sur les vnements clicks des sous-menus. Affichage du contrle utilisateur correspondant :
Private Sub SousMenuListe_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SousMenuListe.Click ucListe.Visible = True ucFiche.Visible = False End Sub
16
Vous devez voir apparatre larborescence de notre projet GestionContacts. Si vous dployez GestionContacts , nous retrouvons tous nos classes VB cres. Choisissez Contact puis cliquez sur Next et Finish .
17
Remarquez que vous avez la possibilit de venir directement rfrencer une autre assembly via le bouton "Add Reference" pour venir lier un objet provenant d'une autre dll
18
4.4) Gnration du formulaire Contact partir de notre DataSource et analyse du code gnr par le Designer de Visual Studio 2005
Allez dans la barre de menu est cliqu sur Data\Show Data Sources . Vous voyez apparatre la fentre Data Sources avec notre connecteur sur lobjet Contact . Cliquez de suite sur la liste de choix pour prendre le mode Detail (et non DataGridView par dfaut).
Remarquez que nous retrouvons bien les proprits de notre classe Contact . Une fois ceci fait, il vous suffit alors de glisser le Data Source Contact sur votre ucFicheContact et VS 2005 vous gnre automatiquement : o Autant de [label, textbox] quil y a de proprits pour lobjet (ici ID, Mail, Nom, Prenom) o 1 objet System.Windows.Forms.BindingSource : ContactBindingSource o 1 objet System.Windows.Forms.BindingNavigator : ContactBindingNavigator; automatiquement li ContactBindingSource via sa proprit (BindingSource)
19
A ce stade ci, plusieurs lignes de code ont t gnres par le designer de VS2005 afin de construire notre formulaire et son Binding avec notre objet Contact , sans que nous en ayons crite une seule !! Cliquez sur licne Show All File sur la fentre Solution Explorer afin dafficher l'arborescence des fichiers de ucFicheContact.vb .
Ouvrez alors le fichier ucFicheContact.Designer.vb et consultez le code gnr ; ceci savrera pdagogique et vous aidera mieux comprendre le mcanisme mis en place derrire. Remarquez ainsi que les traitements suivant sont dj crit : o Le Binding entre lentit Contact et les lments du formulaire est automatiquement gr
Me.ContactBindingNavigator.MoveNextItem = Me.BindingNavigatorMoveNextItem
Il nous restera donc fournir le jeu de donnes qui sera chargs dans le ContactBindingSource (lier sur sa proprit DataSource). Cest ce que nous allons faire prsent.
20
4.5) Liaison du DataSource au contrle DataBinding et mise jour dans le fichier XML
Affichez la partie code de ucFicheContact.vb (click droit View Code ) et dclarez une variable globale qui correspondra notre jeu de donnes :
Dim MesContacts As Contacts
Comme pour le 4.b, gnrez les vnements : ucFicheContact Events - Load Contacts_ContactBindingNavigatorSaveItem - Click o Evnement ucFicheContact_Load
La 1ere tape consiste donc initialisation la variable MesContacts. Pour cela, nous allons utiliser notre classe ContactsStoreXML (qui hrite directement de Contacts) pour charger (LoadData) les contacts stocks dans le fichier XML :
MesContacts = New ContactsStoreXML() MesContacts.LoadData()
Evnement Contacts_ContactBindingNavigatorSaveItem_Click
Au moment de lenregistrement de donnes il suffira de sauvegarder notre liste de contact MesContacts dans le fichier XML via linstruction :
MesContacts.SaveData()
Histoire davertir lutilisateur dune ventuelle erreur qui pourrait survenir lors de la sauvegarde des donnes (erreur lors de lcriture), ajoutons un label ayant pour identifiant lErreur dans notre formulaire, puis sur le Catch aprs linstruction SaveData, affecter le message de lexception sur sa proprit Text :
lErreur.Text = ex.Message
21
Sil ne respect pas le format, il suffit alors dajouter le message derreur pour ce contrle via la mthode SetError :
If Not regExpMail.IsMatch(MailTextBox.Text) Then ErrorProvider1.SetError(MailTextBox, "Format de mail incorrect") Else ErrorProvider1.Clear() End If
Remarque : noubliez pas de vider lerreur si le format est valid ; car si une erreur est survenue au pralable elle saffichera tant que vous ne laurait pas supprim (ErrorProvider1.Clear()).
22
Conclusion
Voil que se termine ce lab. Notre application Windows GestionContacts prend forme. Dornavant vous savez : o Crer un projet sous VS2005 o Gnrer vos classes partir du diagramme o Grer les paramtres dun projet o Crer un menu Windows o Crer des formulaires et des contrles utilisateurs o Srialiser et d srialiser un objet vers une source XML o Lier un objet un DataSource et gnr un contrle DataBinding li o Contrler la saisi dutilisateur avec affichage des erreurs Dans le prochain lab ( ADO.Net 2.0 ), nous allons toffer notre application tout en dcouvrant de nouvelles fonctionnalits : o laccs aux donnes via ADO.NET 2.0 o cration de la base SQLServer 2005 au sein de VS2005 o le DataGridView , tableau trs complet pour laffichage et la manipulation des donnes
23