|
Site |
Cours VB.net |
|
|
|
Nouveautés dans VB.NET 2005 (Framework 2) |
|
|
Le matériel
L'IDE (environnement de développement)
Les nouveaux Objets (My).
Les instances de Form.
Les nouveaux contrôles.
Les nouvelles variables.
Les nouvelles collections.
Le code et les nouvelles instructions.
Les nouveautés dans les classes.
Différences entre les versions. Que permet la version Express GRATUITE par rapport aux autres?
Télécharger VB Express 2005 GRATUIT à vie.
Télécharger sql Server 2005 Express
Télécharger le Service Pack 1 (SP1) New
Développer en VB 2005 pour Vista (Framework 3) New
Le matériel:
Support des plateformes 64 bits.(Pas dans la version Express)
Support du 'multi monitor'
L'IDE
On peut créer des fenêtres toutes faites, avec les contrôles..:
Il y a des fenêtres toutes faites pour accélérer le travail (les templates) comme les 'AboutBox' les 'Explorer Form'...
Edit and Continue:
Il y a maintenant le 'Edit and continue': en mode Debug, on peut modifier une ligne et poursuivre le programme qui tiendra compte de la modification (Sauf pour les déclarations).
Il y a des exemples de code.
Les Snippets (bride, morceau de code) permettent d'insérer du code tout fait.
| Dans le code d'une procédure, le click droit de la souris ouvre un menu. Cliquer sur Insérer un extrait (Insert Snipper) puis double-cliquer sur la rubrique que vous cherchez. |
On obtient le code suivant:
' Copy the active window.
SendKeys.SendWait(
"{PRTSC}")System.Threading.Thread.Sleep(1000)
Dim window As Bitmapwindow =
CType(Clipboard.GetDataObject().GetData("Bitmap"), Bitmap) ' Copy the entire screen.SendKeys.SendWait(
"+{PRTSC}")System.Threading.Thread.Sleep(1000)
Dim screen As Bitmapscreen =
CType(Clipboard.GetDataObject().GetData("Bitmap"), Bitmap)
Génial!!
Il est proposé des solutions pour corriger les erreurs de code:
Une fenêtre vous indique les corrections à faire.
Si je veux afficher une valeur numérique (avec option Strict=On),il y a erreur, VB me propose la correction:
Le Projet Designer:
Toutes les propriétés de l'application peuvent être modifiées dans le 'Projet Designer', il est directement accessible dans l'explorateur de solution (My Projet)ou par le menu Affichage-> Page de propriétés:
Le nom de l'application , son icône,
Le formulaire de démarrage (startUp Form),
L'écran de démarrage (Splash Screen), il suffit d'indiquer son nom (VB l'affiche et le fait disparaître quand le formulaire de démarrage s'ouvre).
Le mode d'arrêt de l'application: A la fermeture du formulaire de démarrage ou lorsque tous les formulaires sont fermés.
Les Option Strict, Explicit.(Onglet Compiler)
On peut utiliser aussi les paramètres (Settings), et les ressources....
a- Exemple de ressource.
Onglet 'Ressources' , créons une ressource nommée 'toto' et contenant '2' (c'est une string)
Pour l'utiliser dans le programme, on fera:
My
.Resources.totoLes ressources sont en Read-Only.
On vient de créer une ressource 'chaines' mais en déroulant la liste en haut à gauche , on voit qu'il y a des ressources Image, Icône, Audi, Fichier, Autre.
b- Exemple de paramètre.
Onglet 'Paramètres' , créons un paramètre nommé 'Para1' et contenant '1' (c'est une string)
Pour l'utiliser dans le programme, on fera:
My
.Parametre.Para1Les Paramètres sont en Read-Only si la portée est 'Application', et en Read-Write si la portée est 'Utilisateur'.
Ces 'variables paramètres utilisateur' ont des valeurs qui seront conservées et enregistrées automatiquement dans l' 'environnement' d'un utilisateur. Si on en modifie la valeur, on retrouve la valeur modifiée lors d'une utilisation ultérieure ce qui permet de conserver les habitudes des utilisateurs.
L'alignement automatique des contrôles:
Si on modifie la taille ou l'emplacement d'un contrôle, VB signale par un trait bleu que le contrôle modifié et le contrôle voisin sont alignés:
Le déplacement des contrôles ou l'accès aux principales tâches est amélioré:
La croix à gauche permet de déplacer le contrôle, la petite flèche à droite permet d'ouvrir un menu qui donne accès aux tâches les plus fréquentes.
Renommer un nom: modification automatique.
On nomme cela 'Refactoring': Cliquer sur une variable, puis bouton droit, dans le menu cliquer sur 'Renommer'. Modifier le nom de la variable, valider. Dans toute la Classe la variable est renommée.
Commentaire en Xml
On peut ajouter des commentaires en xml
Exemple:
Pour une Sub: sur une ligne blanche au dessus de 'Sub', tapez "'''" (3 "'").
ou
Pour une variable: curseur sur la variable , bouton droit puis 'Insérer un commentaire' dans le menu.
Un bloc Xml <Summary> se crée automatiquement; Ajouter 'Fonction Calculant le total' entre les basiles <summary>
Quand ensuite on tape le nom de la Sub , le commentaire s'affiche. Pratique quand on travaille en equipe.
De plus Visual Basic génère automatiquement un fichier de documentation XML lorsque vous créez le projet. Ce fichier apparaît dans le répertoire de sortie de l'application sous le nom AssemblyName.xml.
My: le SUPER RACCOURCI.
My permet d'avoir accès rapidement à certaines fonctionnalités:
My.Application
Permet d’accéder rapidement aux propriétés de l’application en cours.
Vous pouvez ainsi récupérer des informations sur l’assembly, la culture (langue) de l’application.
MsgBox(My.Application.Culture.ToString)
'affiche 'fr-FR'(My.Application.ChangeCulture 'permettra de changer la culture )
MsgBox(My
.Application.Info.DirectoryPath) 'affiche le nom du répertoire ou est l'exécutable.My.Application.SetCurrentUser() retourne l'utilisateurMy.Application.SetCurrentUser()My.Application.OpenForms qui retourne les formulaires ouverts.Exemple: rajouter le texte 'ouvert' à la barre de tache des formulaires ouverts:For Each F As System.Windows.Forms.Form In My.Application.OpenForms F.Text += "[ouvert]" Next
My.Computer
Permet d’accéder aux propriétés de l’ordinateur, du hardware.
Aux ressources logicielles et/ou matérielles de l’ordinateur.
Audio : permet de jouer des fichiers wav, ainsi que les sons systèmes de windows.
My.Computer.Audio.Play("c:\mysound.wav")
Clipboard : permet de récupérer des informations sur le contenu du presse-papier, de récupérer et de définir son contenu.
If My.Computer.Clipboard.ContainsImage Then
PictureBox1.Image = My.Computer.Clipboard.GetImage
ElseIf My.Computer.Clipboard.ContainsText Then
TextBox1.Text = My.Computer.Clipboard.GetText
End IfClock : permet de récupérer l’heure courante ainsi que le nombre de millisecondes écoulées depuis le démarrage.
MsgBox(My.Computer.Clock.LocalTime.ToString)
'Affiche date et heure
FileSystem : permet d’effectuer les opérations d’entrées/sorties standards.
Récupérer le nom des disques:
MsgBox(
My.Computer.FileSystem.Drives.Item(0).ToString)'affiche 'A:'(la collection Drives contient des items indiquant les disques)
Un répertoire existe t-il?
MsgBox(
My.Computer.FileSystem.DirectoryExists("c:\").ToString) 'affiche True si c:\ existe.Possibilité de copier, créer, effacer répertoires ou fichiers:
Exemple: copie d'un répertoire:
My
.Computer.FileSystem.CopyDirectory(sourcedirectory, destinationdirectory)Voir les sous répertoires:
FileSystem.GetDirectories("c:\").item(0) permet de voir le premier sous répertoire.
GetFiles fait de même avec les fichiers.
Mettre le contenu d'un fichier texte dans une variable:
Dim LeTexte As String = My.Computer.FileSystem.ReadAllText("c:\devicetable.log")
(Il existe aussi WriteAllText)
Info : Obtient des informations concernant l’ordinateur et le système d’exploitation (mémoire vive libre, nom de l’os, version de l'os, etc).
MsgBox(My
.Computer.Info.TotalPhysicalMemory.ToString) 'affiche la mémoire physiqueIl y a aussi AvailablePhysicalMemory, OSVersion, OSFullName..
Keyboard : permet de tester l’état des touches CTRL, ALT, etc… et de simuler l’appuie de touche grâce à la méthode Sendkeys.
MsgBox(My
.Computer.Keyboard.AltKeyDown.ToString)' teste si la touche Alt est enfoncée.My.Computer.Keyboard.SendKeys("a"
)' simule l'appuie d'une touche.
Mouse : permet de récupérer des informations sur la souris (présence de la souris, présence de molette, boutons inversés, etc.)
MsgBox(My
.Computer.Mouse.WheelExists.ToString) 'affiche True s'il y a une molette.
Name : récupère le nom de l’ordinateur
MsgBox(My.Computer.Name.ToString)
Network : permet de télécharger et d’uploader des fichiers, de vérifier si l’ordinateur est connecté à Internet, d’effectuer des pings, et de récupérer les évènements lors des connexions et déconnexions.
Charger un fichier à partir du réseau:
My.Computer.Network.DownloadFile(AdresseCompleteFichierACharger, DestinationFileNane)
With My.Computer.Network
If .IsAvailable And .Ping(txtIpAdress.text) Then
.UploadFile("c:\filetupload.ext", txtIpAdress.Text)
End If
End With
Ports : permet de récupérer la liste des ports séries, et de les ouvrir.Printers : permet de récupérer la liste des imprimantes installées et de définir l’imprimante par défaut. (absent dans la version bêta)
Registry : permet de manipuler la base de registre facilement.
Screen : permet de récupérer les informations concernant les écrans installés.
My.User
Permet de récupérer les informations sur l'utilisateur courant.My.User.Identity.Name
My.User.IsInRole("Administrators")
'contient l'administrateur
My.Ressources
Permet de manipuler et récupérer très facilement les ressources incorporées à l’assembly.
My.Setting
Fichiers de configuration.
My.Forms
Donne accès à tous les formulaires.
My.Forms.HelpForm.Show()
My.WebService
Permet de manipuler directement les services web référencés dans le projet.
GZIPStreamClass
Permet d'enregistrer ou de lire des fichiers compressés au format zip .
Support du SMTP et du FTP
Les instances de Forms:
En VB2003 il fallait instancier une Form avant de l'utiliser.
Dim newForm1 As NewForm1
newForm1.BackColor = System.Drawing.Color.Green
newForm1.Show()
On peut toujours le faire en 2005 mais on peut aussi utiliser la Class Form1 sans instancier:
Form1.ForeColor = System.Drawing.Color.Coral
Form1.BackColor = System.Drawing.Color.Cyan
Form1.Show()
Comme il n'y a pas d'instance de Form1, VB en crée une.
Les nouveaux Contrôles
DataGridView
Il remplace le DataGrid dans
VB.Net 2005 Il est bien plus simple à utiliser surtout pour modifier directement la grille sans passer par un DataSet.MyDataGridView.ColumnCount = 5 indique le nombre de colonne.
MyDataGridView.Columns(0).Name = "Date" met un texte dans le haut de la colonne.
MyDataGridView.Rows.Add(t) 'Ajout de ligne; t est un tableau de 5 strings.
MyDataGridView.CurrentCell est la cellule courante (CurrentCellAdress contient les numéro de ligne et colonne)
MyDataGridView.EditMode = DataGridViewEditMode.EditOnEnter autorise de modifier les cellules.
MaskedTextBox
Permettant d'utiliser un masque pour la saisie de caractères. Le masque indique quels caractères interdire ou permettre.
La propriété Mask permet d'indiquer le masque de saisie.
On peut la modifier en mode 'Design' :
On voit bien dans la fenêtre ci dessus: le masque '00:00' permet de saisir 2 groupes de 2 chiffres. L'utilisateur voit que qu'il y a dans l'aperçu '__:__' et est obligé de taper 2 chiffres puis 2 chiffres.
On peut utiliser des masques tout faits (Heure, date..) ou créer un masque personnalisé.
On peut aussi modifier le masque par code:
maskedTextBox1.Mask = "LL"
Pour le masque personnalisé on utilise:
0 Chiffre requis (lettres refusés) 9 Chiffre ou espace optionnel. (lettres refusés) # Chiffre ou espace optionnel. (+) (-) sont permis. L Lettre requise. (chiffres refusés) ? Lettre requise optionnelle. (chiffres refusés) & Caractère requis.(Chiffres et lettres permises) C Caractère, requis optionnel.(Chiffres et lettres permises %*& permis) A Alphanumérique requis opt.(Chiffres et lettres permises %*& refusés) . Point Decimal; celui de la culture. , Séparateur de millier; celui de la culture. : Séparateur de temps; celui de la culture. / Séparateur de date; celui de la culture. $ Symbole monétaire; celui de la culture. < Convertir les caractères qui suivent en minuscule. > Convertir les caractères qui suivent en majuscule. | Stop la conversion minuscule ou majuscule. \ Escape. Le caractère qui suit devient un littéral.“\\” affichera '\'. Autres caractères Littéraux. Affichés tels quels Exemple:
"00/00/0000" permet de saisir une date.
"LLL" permet de saisir trois lettres (pas des chiffres)/ $ , : sont dépendant de la culture en cours:
Si le Mask="0$" il apparaîtra "_€ en culture française.
On peut modifier cela par FormatProvider property.
MaskCompleted indique si la saisie est conforme.
Dim returnValue As Boolean
returnValue = maskedTextBox1.MaskCompleted
MaskedTextBox1.text permet de lire le contenu du texte.
L'évènement le plus souvent utilisé est TextChangedPrivate Sub MaTextBox_TextChanged(sender As Object, _ e As EventArgs) Handles MaTextBox.TextChanged End Sub
SoundPlayer
Pour écouter des sons .Wav
SplitContainer:
Permettant de créer facilement une séparation déplaçable entre 2 zones.
On met le SplitContainer, dans les 2 zones on met par exemple 2 textbox. Il faut mettre la propriété Dock de ces 2 textbox à Fill.
En mode Run, cela marche : si je déplace la zone de séparation centrale, cela agrandit un textbox et diminue le second.
Margin indique la largeur de la séparation.
Orientation permet une séparation horizontale ou verticale.
ListView
WebBrowser:
Pour ouvrir une zone internet.
LayoutPanel:
Permettent de positionner les contrôles dans une Form en conception.
FlowLayoutPanel: Place les contrôles à droite du précédent, passe 'à la ligne' si nécessaire, c'est génial pour créer plusieurs lignes de label, TextBox, Bouton:
TableLayoutPanel:On crée un tableau de panel, puis on met les contrôles dans les cellules:
MenuStrip :
Remplace les MainMenu
On peut même mettre des images dans les menus. Il peut y avoir des combobox et des zones de texte.
Il y a aussi les ContextMenuStrip qui remplace les ContextMenu.
ToolStrip:
Création de barre n'importe ou dans le formulaire.
Exemple de barre de menu comprenant:
Un bouton.
Un label
Un bouton déroulant un menu.
Un comboBox
Une zone texte
Une barre de progression.
Images possible dans les menus, il peut y avoir des séparateurs.
StatuStrip:
Pour créer une barre d'état en bas d'un formulaire; remplace les StatusBar.
Peut contenir des LabelStrip (Label ou LinkLabel), des ProgressBar, DropDownButton et ToolsStripButton.
ProgesBarr:
Idem le contrôle de 2003 avec des fonctionnalités en plus:
La propriété Style permet la progression
par blocks, en continue, ou en oscillation droite gauche ( comme lors de
l'ouverture de Windows XP.
Il y a aussi le toolstripcontainer et un contrôle permettant l'usage port série.
Les nouvelles 'Variables'.
VB 2005 prend en charge les types non signés:
UInteger Entier codé sur 32 bits pouvant prendre les valeurs 0 à 4 294 967 295.
ULong Entier codé sur 64 bits :0 à 18 446 744 073 709 551 615
UShort Entier sur 16 bits 0 à 65 535.
et
SByte Codé sur 1 octet, valeur de -128 à 127
Les nouvelles 'Collections'.
On peut utiliser des collections 'génériques'
System.Collections.Generic.List(Of String)
On peut ainsi créer des collections fortement typées.
Il y a en plus les Collections spécialisées (nouveau type de collection):
L'espace
System.Collections.Specialized fournit ce nouveau type de collection:Exemple: ListDictionary avec Clé et Valeur:
Dim l As New
System.Collections.Specialized.ListDictionary
Dans le Code: les nouvelles instructions
While condition
..Continue While
End While
Continue For existe aussi.
If Not (Objet1 Is Nothing ) Then..
devient
If Objet1 IsNot Nothing Then
Permet de créer un bloc qui libère les ressources en fin de bloc:
Using sqc As New System.Data.SqlClient.SqlConnection(s)
MsgBox("Connected with string """ & sqc.ConnectionString & """")
End Using
En plus de CType et de Cast, il y a maintenant TryCast qui retourne Nothing si la conversion est impossible.
On peut 'overloader' une procédure afin de pouvoir l'appeler avec des paramètres différents.
Overloads
Sub LireEnregistrement(ByVal Name As String, ByVal amount As Single) ' Code permettant de rechercher l'enregistrement à partir du nom. End Sub Overloads Sub LireEnregistrement(ByVal Numero As Integer, ByVal amount As Single)' Code permettant de rechercher l'enregistrement à partir du numéro
End Sub
Les nouveautés dans les Classes:
Les classes 'Partielles' sont possible.
Partial Class MaClasse
End Class
Ainsi une Classe peut être scindée en plusieurs parties situées dans des endroits différents du code.
On peut surcharger les opérateurs + - * / mais aussi _ ^ & Like And Or Xor Not < > = << >> Ctype IsTrue, IsFalse
Exemple: surchargeons l'opérateur +Public Structure height ... Public Shared Operator +(ByVal h1 As height, ByVal h2 As height)As height Return New height(h1.feet + h2.feet, h1.inches + h2.inches) End Operator End Structure
La routine doit être Shared, de plus si on surcharge certains opérateurs, il faut aussi surcharger leur inverse: si on surcharge '>' , il faut surcharger '<'.
Surcharge de IsTrue, IsFalse Ctype
Si on teste un boolean, il a la valeur True ou False.
Si par contre je crée une classe nommée 'Personne', je peux définir comment une instance sera considérée comme égale à True. Il faut surcharger l'opérateur IsTrue en lui indiquant dans quelle condition l'instance sera considérée comme =True:
Exemple:
J'ai une instance e de type Personne, si e.Present =True, dans ce cas je veux que e soit considéré comme True; il faut écrire dans la Classe 'personne':
Public Shared Operator IsTrue(ByVal e As Personne) As Boolean
If e Is Nothing Then
Return False
Else
Return e.Present
End If
End Operator
Pour définir l'opérateur IsFalse, c'est simple: c'est Not e
Public Shared Operator IsFalse(ByVal e As Personne) As Boolean
Return Not e
End Operator
Ensuite je pourrais utiliser des instructions de la forme:
If e then..
Surcharge de Ctype:
Je peux définir dans une classe comment CType va fonctionner:
Pour cela dans la classe Personne, je vais définir les 3 possibilités:
Public Shared Widening Operator CType(ByVal e As Personne) As String
Return e.Nom + " " + e.Prenom
End Operator
Public Shared Widening Operator CType(ByVal e As Personne) As Date
If e Is Nothing Then
Return Nothing
Else
Return e.DateDeNaissance
End If
End Operator
Public Shared Widening Operator CType(ByVal e As Personne) As Boolean
If e Is Nothing Then Return False Else Return e.Present
End Operator
Ainsi
Ctype(UnePersonne,String) retourne Nom Prenon
Ctype(UnePersonne,Date) retourne la date de naissance
Ctype(UnePersonne,Boolean) retourne True ou False.
On peut créer des Property avec une portée différente pour le Set et le Get:
Public Class employee Private salaryValue As Double Protected Property salary() As Double Get Return salaryValue End Get Private Set(ByVal value As Double) salaryValue = value End Set End Property End Class
Utilisation des 'générics'
Un type 'generic' permet de créer une Classe ayant des Data Types non définis au départ.
Créons une classe MyClasse; Of permet d'indiquer le genéric:
Public Class MyClasse(Of t) Public Sub NewItem(ByVal newItem As t) Dim tempItem As t ' Insert code that processes an item of data type t. End Sub End ClassOn peut ensuite utiliser cette classe avec des Integer ou des String:
Public UneClass As New MyClasse(Of Integer) Friend stringClass As New MyClasse(Of String)voir la rubrique 'générique' pour le détails.
Support du protocole FTP et Ping.
|
|
|
|
|