Visual Basic .NET et vos compétences VB6
Par Yann Faure, posté le 18/06/2001
Profil : Développeur | Niveau : Intermédiaire (200)
1. Préambule
Visual Basic va subir un toilettage important et proposer des fonctionnalités nouvelles avec la version .NET. Commençons par le commencement, c'est à dire par refaire ce que l'on sait déjà parfaitement faire sous VB 6.0.
Il ne s'agit pas ici d'étudier la migration d'une application VB6 en VB.NET ni de vous donner un cours sur VB.NET. Nous allons seulement essayer de dégrossir quelques points importants pour vous permettre de retrouver vos petits dans Visual Basic .NET.
2. Créer un projet
On distinguait sous VB 6.0 huit grands types de projet classiques. Petit rappel :
1. Standard EXE : un exécutable très classique qui n'offre aucune interface de programmation. Exemple : le bloc-notes, la calculatrice de Windows.
2. ActiveX EXE : un exécutable un peu moins classique car il offre la possibilité d'exposer des composants COM. Par exemple, Word permet grâce à un modèle très riche, d'être manipulé par une autre application. Vous pouvez le piloter pour qu'il écrive un document et l'imprime.
3. ActiveX DLL : un programme qui contrairement aux deux précédents ne peut pas fonctionner tout seul. Il a besoin d'un compagnon qui lui crée un processus dans lequel il peut se loger. Ceci le rend plus performant (pas de communication interprocessus). Cependant, il expose comme son cousin ActiveX EXE des composants COM. Les ADO sont un exemple de DLL ActiveX.
4. ActiveX Control : jusqu'à présent, nous avons vu des projets qui permettaient une réutilisation des traitements mais pas de l'interface graphique. C'est le but des contrôles ActiveX, qui s'intègrent dans des applications container (comme l'Internet Explorer, les applications Office, des applications VB, des application VC++.). Exemple : la barre de progression que l'on regarde patiemment pendant les installations.
5. ActiveX Document EXE : possibilité d'intégrer complètement une application dans une autre application appelée container. Exemple : Word s'intégrant dans Internet Explorer ou dans le binder d'Office.
6. ActiveX Document DLL : même principe que le type de projet précédent mais compilé en DLL. Exemple : l'add-in Visual Component Manager s'intégrant dans une fenêtre ancrable de Visual Basic 6.
7. DHTML Application : création d'une application concentrant le code de scripting client de pages HTML dans un composant COM.
8. IIS Application : création d'une application Web répondant donc à des requêtes HTTP et renvoyant du code HTML.
Alors, quoi de neuf sous le soleil de VB.NET ? Tout d'abord une modification des projets pour mettre le mot ActiveX aux oubliettes. Voici les types de projets essentiels :
1. Windows Application : le successeur, vous l'avez démasqué, du Standard EXE. Comme précédemment, il créera un formulaire (appelé dorénavant WinForm). Mais, et là vous ne l'aviez pas vu (avouez-le), il est aussi le successeur de l'ActiveX EXE. Je vous l'avais pourtant dit, plus d' « Active X » ! Vous pouvez donc créer des applications exposant ou non des composants .NET.
2. Class Library : le type de projet qui va vous permettre de créer des DLL contenant des composants .NET. Comme son prédécesseur ActiveX DLL, il présente, à la création, une classe.
3. Windows Control Library : ce type de projet va vous permettre de créer un projet contenant un contrôle prêt à être enrichi, comme auparavant les projets de type ActiveX Control.
Ces trois types de projet devraient suffire. Cependant, Visual Basic s'est enrichi, grâce au Framework .NET, de trois nouveaux types d'application. Nous allons les décrire ici rapidement. Les fonctionnalités supplémentaires de Visual Basic .NET seront expliquées de manière plus approfondie dans les articles qui suivront. Voici donc :
4. Console Application : il est enfin possible très facilement d'écrire un programme en mode console avec Visual Basic. Pour cela un module contenant une procédure « main » va être créé. La classe console vous permettra (notamment grâce aux méthodes statiques Read, ReadLine, Write et WriteLine) de lire et écrire du texte dans la fenêtre console.
5. Windows Service : c'est la deuxième simplification. L'écriture d'un service Windows se fait grâce à ce type de projet de manière extrêmement simple. Une simple classe héritant de la classe ServiceBase du Framework .NET vous permettra d'implémenter notamment les méthodes OnStart et OnStop pour contrôler votre service.
6. Web Service : dernière simplification, l'écriture de service Web. Sans passer par le SOAP Toolkit vous allez pouvoir créer une application pouvant être interrogée sur Internet via HTTP.
Ce n'est pas tout, dans les services qu'offre le Framework .NET est inclus ASP.NET. Il va donc être possible de créer des applications pour le Web en Visual Basic. Voici les deux derniers types importants de projet :
7. Web Application : ce type de projet vous aide à réaliser un site Web. Chaque page Web (ou WebForm) est composée d'une interface graphique et d'une classe. On retrouve ici le même principe que pour les WinForms.
8. Web Control Library : de façon identique aux contrôles Windows, vous avez la possibilité de créer des contrôles Web afin de réutiliser aisément ces interfaces graphiques dans diverses application Web
2.1 Créer une interface graphique
En Visual Basic 6 pour créer une interface graphique on utilisait essentiellement :
§ Les formulaires
§ Les contrôles standards de Visual Basic
§ Les contrôles ActiveX
En Visual Basic.NET nous allons utiliser :
§ Les WinForms présentes dans le FrameWork .NET
§ Les contrôles présents dans le FrameWork .NET
§ Et toujours la possibilité d'utiliser les contrôles ActiveX
2.1.1 Les WinForms

Après avoir graphiquement dessiné votre interface comme sous Visual Basic 6, vous allez avoir envie d'utiliser ce WinForm.
Soit ce formulaire est la fenêtre de démarrage (indiquée comme sous Visual Basic 6 dans les propriétés du projet) et votre application va lancer automatiquement cette fenêtre, soit ce formulaire est une fenêtre qui doit être visible après une action utilisateur, et dans ce cas-là deux solutions se présentent :
§ Vous étiez un adepte du « form1.show » : cette incohérence (supprimée en Visual Studio .NET) permettait d'instancier un formulaire de façon automatique à l'utilisation de l'instance, du moment que celle-ci avait le même nom que le formulaire. De façon simple lorsque vous écriviez :
1: form1.show
VB 6.0 ajoutait pour vous, de façon imagée, cette ligne dans un module :
1: Public form1 As New form1
Cette incohérence à été heureusement supprimée (le mécanisme est souvent ignoré). Il va donc falloir faire vous-même la déclaration de votre WinForm et son instanciation.
§ Vous étiez un exterminateur du « form1.show » et vous déclariez d'abord votre instance de formulaire et l'instanciez : vous savez donc déjà utiliser les WinForms !
Pour afficher une WinForm, il suffit d'écrire:
1: Dim MaFenetre as New Form1()
2: MaFenetre.Show()
Cependant, notez que si vous désirez rendre cette fenêtre modale, il faudra utiliser la nouvelle méthode ShowDialog et non plus passer cette information en paramètre.
Votre formulaire va hériter de la classe System.WinForms.Form. Donc, pour aller plus loin ,regardez les membres de cette classe.
2.1.2 Les contrôles .NET
Un formulaire, c'est bien, mais avec des contrôles, c'est mieux. Et la bonne nouvelle, c'est que tous les contrôles ont été revus pour être améliorés et unifiés dans le Framework .NET. Nous allons donc retrouver les contrôles standards de VB 6 améliorés :
§ Label
Le label peut être modifié maintenant par la propriété text et non caption.
§ Button
Son nom change ainsi que, comme pour le label, la façon de modifier le texte.
§ TextBox
L'un des événements les plus utilisés (Change) a été renommé en TextChanged.
§ CheckBox
La propriété value a été remplacée par deux propriétés : Checked et CheckState qui indique respectivement si la checkbox est cochée et l'état de la checkbox, à savoir pas cochée, cochée ou dans un état intermédiaire.
§ RadioButton
L'un des événements les plus utilisés (Click) a été renommé en CheckedChanged.
§ GroupBox
Avec le panel, ils remplacent les frames de VB6.
§ ListBox
Plus de AddItem, List, ListIndex et autres ListCount ! Une simple collection Items et trois propriétés : selectedItem pour l'élément sélectionné, selectedIndex pour l'index de l'élément sélectionné et selectedItems pour les sélections multiples. Le bonheur !
§ ComboBox
Comme pour la ListBox, on bénéficie de la collection items.
§ PictureBox, HScrollBar,VScrollBar
§ Timer
2.1.3 Les contrôles ActiveX
Les contrôles ActiveX que vous utilisiez sous les versions précédentes sont encore utilisables. VB.NET va créer automatiquement un proxy pour pouvoir les appeler. Vous pouvez les référencer de la même manière.
2.2 Utiliser des composants
Les composant ActiveX que vous utilisiez sous les versions précédentes sont encore utilisables. VB.NET va créer automatiquement un proxy pour pouvoir les appeler. Vous pouvez les référencer de la même manière.
L'utilisation de composants .NET se fait de la manière suivante
1: Dim monObjet as MaClasse
2: Set monObjet = New MaClass()
3: monObjet.MaMethode()
Attention, vous ne devez plus utiliser CreateObject("ProgID").
2.3 Créer des composants
Pour créer un composant .NET, vous devez, comme auparavant, créer une classe mais votre classe doit hériter de la classe System.ComponentModel.Component. Voici un petit exemple :
1: Public Class MaClasse
2: Inherits System.ComponentModel.Component
3: Public Sub MaMethode()
4: MsgBox("Bonjour !")
5: End Sub
6: End Class
En ce qui concerne la déclaration d'événement et de méthode, vous pouvez la faire comme auparavant. La déclaration des propriétés a quelque peu changé :
1: Private pMaPropriete As String
2: Public Property MaPropriete() As String
3: Get
4: MaPropriete = pMaPropriete
5: End Get
6: Set
7: pMaPropriete = Value
8: End Set
9: End Property
Après avoir été consultant et avoir dirigé l’équipe Bewise pendant 10 ans, Yann se consacre maintenant à une autre activité du groupe : Vertice, société éditrice de la gamme Nova spécialisée dans la 3D interactive. Il travaille à rendre la 3D plus simple d’accès dans la réalisation et la visualisation.



