Cours VB.NETDate de mise à jour : 05/12/2010
VIII-A. Différentes interfaces utilisateur: Console, Windows Forms, WPF.
VIII-B. Interface utilisateur Windows Forms et 'Control'
VIII-B-1. En pratique, comment créer l'interface utilisateur ?
VIII-B-2. La Classe 'Control'
VIII-B-3. Évènements liés aux objets avec représentation visuelle
VIII-B-4. En résumé
VIII-C. Les fenêtres ou 'Formulaires'
VIII-C-1. Créer une fenêtre en mode conception
VIII-C-2. Propriétés
VIII-C-3. Ouvrir un formulaire
VIII-C-4. Fermer un formulaire
VIII-C-5. Évènements
VIII-C-6. Méthodes
VIII-C-7. Form et code généré par vb
VIII-C-8. Formulaire d'avant plan, Barre de tache.
VIII-C-9. Formulaire non rectangulaire
VIII-A. Différentes interfaces utilisateur: Console, Windows Forms, WPF.
L'interface utilisateur (UI) ou interface homme-machine est la partie du programme qui permet à l'utilisateur du logiciel de communiquer avec le programme.
Où est-il possible de saisir des données au clavier, où seront affichés les résultats ? Quand on crée une application VB, on a le choix:
- Faire une application purement 'Console':Saisir et afficher sur la console qui est une simple fenêtre de type DOS. Cette méthode utilisant la console, est peu évoluée, archaïque. Pour une Application Console: Menu 'Projet'-> 'Propriétés de ...' Combo 'Type de sortie' :Application Console. Dans ce cas la console correspond à une fenêtre type DOS. Et là, on peut entrer des infos à partir du clavier, modifier les couleurs, la position du curseur...
On peut écrire du texte sur la console.
Voici un programme purement 'Console'
Module Module1
Sub Main ()
Console. SetWindowSize (65, 35)
Console. Title = " test "
Console. BackgroundColor = ConsoleColor. Blue
Console. Clear ()
Console. ForegroundColor = ConsoleColor. Red
Console. SetCursorPosition (10, 20)
Console. Write (" Tapez un texte " )
Dim ligne As String = Console. In . ReadLine ()
Console. Beep
Console. Beep (800, 1000)
Console. Read ()
End Sub
End Module
|
- Faire une application 'WindowsForms': Créer des fenêtres
(ou formulaires Windows Forms ) basés sur GDI, y mettre des boutons, des textbox... pour saisir et afficher. C'est l'interface habituelle des programmes Windows, nous l'étudierons en détail dans les chapitre "Windows Forms' et suivant.
Une application Windows (option par défaut), c'est celle que nous utiliserons dans le reste du cours. Menu 'Projet'-> 'Propriétés de ...' Combo 'Type de sortie' :Application Windows.
On utilise des fenêtres Windows: pour créer l'application.
Dans le cas des Windows Forms, en plus on peut aussi écrire sur la 'console'. La console correspond à la fenêtre de 'Sortie': Menu Affichage>Autres fenêtres>Sortie(Ctrl Alt O). On utilise habituellement cette fenêtre de sortie pour le mise au point et pour afficher des informations de débogage.
Mais là, on ne peut qu'écrire sur la console:
3- A partir de Visual Basic 2008, on peut aussi utiliser les WPF.
WPF utilise lui un moteur de rendu vectoriel et des accélérations matériels (Direct X) pour afficher. Cela permet d'afficher de la 2D, de la 3D, des animations, de plus l'affichage étant vectoriel, il n'y a pas de dépendance avec les dimensions de l'écran.
Mais c'est un peu complexe pour les débutants.
4- Programme sans interface.
Rarement, on n'a pas besoin d'interface, on lance un programme qui effectue une tache puis se ferme sans avoir besoin de recevoir ou de donner des informations à l'utilisateur. C'est possible en VB.
VIII-B. Interface utilisateur Windows Forms et 'Control'
L'interface utilisateur (IU) correspond aux fenêtres et contrôles que voit l'utilisateur .
Elle assure le dialogue entre l'homme et la machine. C'est l'Interface Homme Machine (IHM) . Sous Windows, c'est l'interface graphique.
VIII-B-1. En pratique, comment créer l'interface utilisateur ?
On a vu que le développeur dessine cette interface en mode conception (Design) dans l'IDE (Environnement de développement):
Exemple:
On crée une interface utilisateur avec une fenêtre, un bouton, un label (affichant du texte).
Quand on crée un nouveau projet, il y a création d'un Form1 automatiquement.
Comment rajouter une fenêtre?
Menu Projet, Ajouter un formulaire Windows, cliquer sur WindowsForm, une fenêtre 'Form1' apparaît. On a bien crée une fenêtre avec la classe WindowsForms.Form (En fait on a crée une Classe 'Form1', on verra cela plus loin.)
Comment ajouter un bouton?
Cliquer sur 'Boite à Outils' à gauche , bouton WindowsForms, puis bouton 'Button',cliquer dans Form1, déplacer le curseur sans lâcher le bouton, puis lâcher le bouton : un bouton apparaît.
Comment ajouter un label?
Un label est un contrôle qui permet d'afficher un texte.
Comme pour le bouton cliquer sur 'Boite à Outils' à gauche, bouton WindowsForms, bouton 'Label' et mettre un contrôle label sur la fenêtre.
On obtient dans la fenêtre principale:
Modifier les propriétés des l'objets (Bouton, label..) en mode Design.
Il suffit ensuite de modifier les propriétés de l'objet pointé (celui qui est entouré de petits carrés) pour lui donner l'aspect désiré. Les propriétés sont accessibles dans la fenêtre de propriétés de droite.
Noter que pour modifier la taille des objets, on peut le faire très facilement à la souris en cliquant sur les petits carrés entourant l'objet et en tirant les bords. (on peut interdire les modifications de taille et de position des contrôles par le menu Format puis verrouiller les contrôles une fois que leurs tailles et positions est bien définies.)
Modifier les propriétés des l'objets (Bouton, label..) par code.
Dans le code des procédures les propriétés des objets sont aussi accessibles.
VIII-B-2. La Classe 'Control'
Les contrôles dit visuels (Button, TextBox ListBox...) héritent tous de la classe Control qui hérite elle-même de la classe System.WindowsForms.
Autrement dit, les Button, Label, TextBox... sont des 'Control'.
Tous ces objets ont des propriétés communes héritées de la classe Control.
Nous allons voir les plus utilisées:
Name : il s'agit du nom de l'objet tel qu'il est géré par l'application.
Par défaut, VB baptise tous les objets que vous créez de noms génériques, comme Form1, Form2, Form3 pour les fenêtres, List1, List2 pour les listes...
Cette propriété est accessible en mode conception uniquement.
 |
Il est vivement conseillé de renommer les objets que vous venez de créer afin de donner des noms plus évocateurs.
|
Le bouton sur lequel est écrit « OK » sera nommé BoutonOK ou ButtonOk if you are anglophile.
La liste qui affiche les utilisateurs sera nommée ListUtilisateurs.
Il est conseillé de débuter le nom de l'objet par un mot évoquant sa nature:
BoutonOk ou BtOk ou ButtonOk, btnOk c'est comme vous voulez.
Microsoft conseille:
btn pour les Boutons
lst pour les ListBox
chkpour les CheckBox
cbopour les combos
dlg pour les DialogBox
frm pour les Form
lbl pour les labels
txt pour les Textbox
tb pour les Toolsbar
rb pour les radiobutton
mm pour les menus
tmr pour les timers
Text : il s'agit du texte qui est associé à l'objet.
Dans le cas d'une fenêtre c'est le texte qui apparaît dans la barre de titre en haut.
Pour un TextBox ou un Label c'est évidement le texte qui est affiché.
On peut modifier cette propriété en mode conception ou dans le code :
Exemple : Avec du code comment faire pour que le bouton ButtonOk porte l'inscription 'Ok'
Enabled : accessible
Indique si un contrôle peut répondre à une interaction utilisateur.
La propriété Enabled permet l'activation ou la désactivation des contrôles au moment de l'exécution. Vous pouvez désactiver les contrôles ne s'appliquant pas à l'état actuel de l'application. Vous pouvez également désactiver un contrôle pour interdire son utilisation. Par exemple, un bouton peut être désactivé pour empêcher l'utilisateur de cliquer dessus. Si un contrôle est désactivé, il ne peut pas être sélectionné. Un contrôle désactivé est généralement gris.
Exemple : désactiver le ButtonOk
Visible :
Indique si un contrôle est visible ou non.
 |
Attention pour rendre visible une fenêtre on utilise la méthode .Show.
|
Exemple:
Button1.Enabled = True (il est accessible )
Button2.Enabled = False (il est grisé, l'utilisateur ne peut pas cliquer dessus)
Button3.Visible = False (on ne ne voit pas ce bouton 3)
Button4 a le focus
Button5.Text= "Ok"
Font :
Permet le choix de la police de caractères affichée dans l'objet.
TextBox1. Font = New Font (" Courier New " , 12, FontStyle. Italic )
|
Pour qu'un TextBox utilise la font "Courier New" de taille 12 en italique.
BackColor ForeColor:
Couleur du fond, Couleur de l'avant plan.
Pour un bouton Forecolor correspond au cadre et aux caractères.
ButtonOk. ForeColor = System. Drawing . Color . Blue
|
Tag:
Permet de stocker une valeur ou un texte lié à l'objet. Chaque objet a un Tag qui peut contenir un objet.
On l'utilise souvent comme un Flag 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 ultérieurement de voir ce qu'il y a dans la liste.
Locked:
Si locked est égal à True, le contrôle ne peut pas être déplacé ou redimensionné dans l'IDE.(A partir de VB2005)
Dans ce cas apparaît un petit cadenas.
Size, MinimunSize et MaximumSize:
Donne les dimensions du control (largeur, hauteur) ou les dimensions minimum et maximum que l'on peut utiliser pour redimensionner le control lorsqu'il est redimensionnable.
On ne peut pas donner la largeur et hauteur directement; il faut instancier un nouvel objet Size:
Button. Size = New Size (100, 100)
|
Width et Height: donne la largeur et hauteur.
Location:
Donne les coordonnées de la position du coin supérieur gauche du contrôle.
On peut aussi utiliser Location.X et Location.Y( en pixel toujours).
L'origine (coordonnées 0,0) est en haut à gauche.
Button1. Location = New Point (100, 100)
Button. Location . X = 32
|
Top et Left donnent aussi les coordonnées de la position du coin supérieur gauche (mais en VB 2008 ils n'apparaissent pas dans la fenêtre des propriétés).
SetBounds permet de modifier x, y, width, height.
Button. SetBounds (100, 100, 45, 45)
|
Modifiers concerne la visibilité de l'objet au niveau programmation:
Private: Le contrôle est visible dans le formulaire uniquement.
Public: Visible dans toute la solution.
Friend: Visible dans tout le programme et les assemblages liées.(Valeur par défaut)
Protected: Visible dans le formulaire et les sous formulaires.
AutoSize
S'il est égal à True, le contrôle se redimensionne automatiquement en fonction du contenu. Pour un bouton, par exemple la largeur va se modifier en fonction de la longueur du texte qui est dans le bouton; la hauteur aussi en fonction de AutoSizeMode.
Il y a bien d'autres propriétés.
Un contrôle peut en contenir d'autres qui en contiennent d'autres.
Exemple: un formulaire contient un cadre qui contient des boutons:
La propriété Parent indique le contrôle conteneur: celui qui contient le contrôle en cours. FindForm retourne le formulaire conteneur.
HasChildren indique si le contrôle en cours contient d'autres contrôles, dans ce cas ils sont dans la collection Controls.
Exemple:
Si un Button1 est dans un formulaire nommé Form1 et dont la barre de titre contient 'Mon formulaire'
Button1.Parent retourne "NomProgramme.Form1 Text: Mon formulaire"
FindForm retourne la même chose ici.
VIII-B-3. Évènements liés aux objets avec représentation visuelle
On a vu que les objets de l'interface utilisateur ont des procédures déclenchées par les évènements de cet objet.
2 exemples:
- Quand l'utilisateur clique sur un bouton Ok , la procédure BtOkClick s'effectue.
- Quand l'état (coché ou non coché) d'une case à cocher nommée Co change, la procédure Co.CheckedChanged est activée.
La syntaxe complète de la procédure est:
Private Sub BtOkClick (ByVal sender As System. Objet , ByVal e As System. EventArgs ) Handles BtOk. Click
End Sub
|
Détaillons:
Private Sub
La procédure évènement est privée donc accessible uniquement dans le module.
BtOkClick
Après le nom Sub il y a un nom de procédure. Ce nom est construit avec le nom du contrôle et l'évènement, mais cela aurait pu être n'importe quel nom car ce n'est pas ce nom qui indique ce qui déclenche la procédure.
Sender
indique le contrôle ayant déclenché l'évènement. c'est un Objet.
sender.Name contient par exemple le nom du contrôle ayant déclenché l'évènement.
e
C'est une variable de type SystemEventArgs qui permet de connaître l'évènement qui à déclenché la procédure.
Handles
Indique quel objet et évènement à déclenché la procédure. (On verra qu'il peut y en avoir plusieurs.)
Handles BtOk.Click indique que c'est l'évènement Click sur l'objet BtOk qui déclenche la procédure.
On voit que quand on crée un objet, ses procédures évènements sont automatiquement crées.
On se rend compte que dans une procédure évènement on peut modifier (en mode conception) ou lire (en mode Run) quel objet et quel évènement à déclenché la procédure. On peut même indiquer plusieurs objets liés à cette procédure.
Certains évènement sont communs à tous les contrôles:
Click
DoubleClick
GotFocus Prise du focus
LostFocus Perte du focus
KeyUp Remontée d'une touche clavier
KeyPress Pression d'une touche clavier
KeyDown Appuie sur une touche clavier
MouseUp Lacher le bouton gauche de la souris
MouseDown Appuie sur le bouton gauche de la souris
MouseMove La souris passe sur le contrôle.
Resize Modification de la taille (pour un formulaire°
|
Il y a toujours des méthodes Changed déclenchées par un changement d'état: CheckedChanged pour une case à cocher, TextChanged pour un contrôle texte.
Pour ne pas alourdir les exemples, nous écrivons souvent une version simplifiée de l'en-tête de la procédure.
Nous écrivons:
au lieu de:
Private Sub BtOkClick (ByVal sender As System. Objet , ByVal e As System. EventArgs ) Handles BtOk. Click
|
Attention, au Type des paramètres.
Sender est un 'Object'.
Exemple: dans Form_Load d'une form, le paramètre sender est bien le formulaire qui a déclenché le Load mais son type est 'Objet'. Et sender.ForeColor n'est pas accepté car Forecolor n'est pas une propriété d'un objet.
Private Sub Form1_Load (ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles MyBase. Load
Couleur= sender. . ForeColor
End Sub
|
Pour pouvoir utiliser ForeColor, il faut caster (transformer) l'objet en Form.
Private Sub Form1_Load (ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles MyBase. Load
Couleur= CType (sender, Form). ForeColor
End Sub
|
VIII-B-4. En résumé
Le programmeur dessine les fenêtres et contrôles.
Il peut modifier les propriétés des objets dessinés:
Par la fenêtre de propriétés (en mode conception).
Par du code (des instructions) dans les procédures.
VIII-C. Les fenêtres ou 'Formulaires'
Elles correspondent aux fenêtres ou 'formulaires'. Ce sont les 'Windows Forms'.
VIII-C-1. Créer une fenêtre en mode conception
Quant on ouvre un nouveau projet il y a déjà une Form1. On peut avoir besoin d'en ajouter une autre au projet.
Menu Projet, Ajouter un formulaire Windows, cliquer sur WindowsForm, une fenêtre 'Form1' apparaît. On a bien crée une fenêtre avec la classe WindowsForms.
Toute l'interface se trouve sur des fenêtres.
En VB.net on parle de formulaire.
VIII-C-2. Propriétés
Bien sur, la fenêtre possède des propriétés qui peuvent être modifiées en mode design dans la fenêtre 'Propriétés' à droite :
Pour modifier la propriété Text par exemple, on clique sur 'Form1' en face de Text, on efface 'Form1' et on tape le nouveau texte.
On peut aussi modifier les propriétés par une ligne de code:
Form1. Text = " Nouveau texte "
|
Voyons les choses plus en détails:
Name :Nom du formulaire. C'est le nom qui désignera l'objet dans le code.
Donner un nom explicite: FrmDemarrage par exemple.
Dès qu'une fenêtre est créée on modifie immédiatement ses propriétés en mode conception, dans la fenêtre de propriétés, pour lui donner l'aspect que l'on désire.
Text : C'est le texte qui apparaîtra dans la barre de titre en haut.
Text peut être modifié par le code : Form1.Text= "Exemple"
Icon : propriété qui permet d'associer à la Form un fichier icône. Cette icône s'affiche dans la barre de titre, tout en haut à gauche. Si la Form est la Form par défaut du projet, c'est également cette icône qui symbolisera votre application dans Windows.
Comment mettre l'icône 'euro.ico' dans la barre de titre, par code?
Dim MyIcon As Drawing. Icon = New System. Drawing . Icon (" C:\euro.ico " )
Me. ShowIcon = True
Me. Icon = MyIcon
|
Comment créer une icône?
Dans l'IDE de VB (pas en VB Express!!).
Menu Fichier>Nouveau>Fichier cliquez sur Icon , Vb ouvre une fenêtre Icon1 (dans l'éditeur d'images de Visual Studio.Net) Cela permet de créer ou modifier une icône (Fichier>Ouvrir>Fichier pour modifier).
Comment enregistrer? Click droit dans l'onglet 'Icon1' ouvre un menu contextuel permettant d'enregistrer votre Icône.
On peut aussi utiliser des logiciels gratuits pour faire des icones (Photofiltre est très bien).
Cursor : propriété qui permet d'associer à la Form un curseur.
Pour mettre une croix en guise de curseur:
Me. Cursor = Cursors. Cross
|
C'est valable dans tous les contrôles.
WindowState :
Donne l'état de la fenêtre : Plein écran (FormWindowState.Maximized), normale (FormWindowState.Normal), dans la barre de tache (FormWindowState.Minimized).
Exemple: mettre une fenêtre en plein écran avec du code.
Me. WindowState = FormWindowState. Maximized
|
(Quand on tape Me.WindowsState= , Vb donne la liste, l'énumération)
Remarque: 'Me' indique l'instance ou le code est en train de s'exécuter, dans ce cas Me indique le formulaire en cours.
ControlBox
Si cette propriété à comme valeur False, les boutons de contrôle situés à droite de la barre de la fenêtre n'apparaissent pas.
MaximizeBox
Si cette propriété à comme valeur False, le boutons de contrôle 'Plein écran' situés à droite de la barre de la fenêtre n'apparaît pas.
MinimizeBox
Si cette propriété à comme valeur False, le boutons de contrôle 'Minimize' situés à droite de la barre de la fenêtre n'apparaît pas.
En résumé:
FormBorderStyle
Permet de choisir le type des bords de la fenêtre : sans bord (None), bord simple (FixedSingle)ne permettant pas à l'utilisateur de modifier la taille de la fenêtre, bord permettant la modification de la taille de la fenêtre (Sizable)..
Si on a 'None', la barre de titre n'apparaît pas.
En VB 2005 il y a aussi Fixed3D qui ajoute un petit effet 3d de profondeur sur le tour , FixedDialog et aussi FixedToolWindows et SizableToolWindows (ces 2 dernières cachent les boutons Maximize et Minimize et l'icone).
Exemple de code:
Me. FormBorderStyle = FormBorderStyle. Sizable
|
Cela donne:
None FixedSingle Sizable SizableToolWindows.
StartPosition :
Permet de choisir la position de la fenêtre lors de son ouverture.
Fenêtre au centre de l'écran ? à la position qui existait lors de la conception ...?
Me. StartPosition = FormStartPosition. CenterScreen
|
Location: coordonnés du point supérieur gauche par rapport au conteneur (on utilise plutôt StartPosition).
Me. Location = New Point (100, 100)
|
Size, MinimunSize et MaximumSize
Donne les dimensions de la Form (largeur, hauteur) ou les dimensions minimum et maximum que l'on peut utiliser pour redimensionner une fenêtre lorsqu'elle est redimensionnable.
Me.Size = New Size(100, 100) 'Les dimensions sont contenues dans un objet Size que l'on crée.
Width et Height: donne la largeur et hauteur.
On parle ici des dimensions extérieures du formulaire (Barre de titre et bordures comprises)
Pour avoir les dimensions internes utilisables (Sans barre de titre et bordures) il faut utiliser ClientSize.
On remarque que si on modifie ClientSize, cela modifie Size car la hauteur de la barre de titre n'est pas modifiable.
Opacity
Allant de 0% (0) à 100% (1), permet de créer un formulaire plus ou moins transparent.
Pour 0 il est transparent, pour 100 il est totalement opaque (normal)
TransparencyKey indique une couleur qui va être transparente: si j'indique le jaune, les parties jaunes du formulaire n'apparaitrons pas en jaune mais on verra par transparence ce qu'il y a derrière le formulaire.
Locked: propriété qui si elle a la valeur False interdit le déplacement et le redimensionnement de la Form dans le designer.
Me.Locked= True interdit le déplacement et les modifications de taille du formulaire dans le designer.
Est présent dans tous les contrôles.
AutoScroll permet de placer automatiquement des barres de défilement lorsque la taille du formulaire ne permet pas l'affichage de tous les contrôles qu'il contient.
La collection Controls contient les contrôles qui sont dans le formulaire (boutons, listes..).
On peut parcourir la collection, pour voir de quel type est le contrôle:
Dim i As Integer
For i = 0 To Me. Controls . Count - 1
. . . Me . Controls . Item (i). GetType . . .
Next i
|
Pour un bouton GetType retourne System.Windows.Forms.Button
Le nom du bouton est :
On verra plus loin que pour ajouter, par code, un contrôle à une form, il faut l'ajouter à la collection Controls:
Me. Controls . Add (MyButton)
|
Exemple complet:
Me. FormBorderStyle = Sizable
Me. ControlBox = False
Me. Size = New Size (100, 100)
Me. StartPosition = FormStartPosition. CenterScreen
Me. Opacity = 0. 75
Me. Text = " Exemple "
|
Donne au milieu de l'écran, la fenêtre:
(Dans notre exemple, on ne s'occupe pas pour le moment du bouton et du label "Bonjour")
VIII-C-3. Ouvrir un formulaire
On vient de dessiner une Form1 et une Form2 c'est donc les Class 'Form1 et ''Form2' (les moules) que l'on a dessiné.
Si dans une routine de la Form1 on veut ouvrir une seconde fenêtre de type Form2, il faut:
Créer un Objet fenêtre (formulaire) avec le moule Form2:
La nouvelle instance f de la Class 'form2' est un objet formulaire.
Pour la faire apparaître j'utilise la méthode: .ShowDialog.
La fenêtre f est modale car on a utilisé ShowDialog : quand elle est ouverte, on ne peut pas aller dans une autre fenêtre de l'application avant de sortir de celle là. (A titre d'exemple les fenêtres MessageBox sont toujours Modales).
Utiliser .Show pour ouvrir une feuille non modale.
 |
Attention: une fenêtre est un objet et est 'visible' suivant les règles habituelles des objets.
|
Si on instancie une fenêtre à partir d'une procédure, elle sera visible dans cette procédure. Si elle est 'Public' et instanciée dans un module standard, elle sera visible partout.
f.Activate donne le focus à un formulaire visible.
VIII-C-4. Fermer un formulaire
On utilise Close.
Exemple:
Me.Close ferme le formulaire courant: le formulaire n'existe plus, il disparaît.
Par contre:
Me.Hide fait disparaître le formulaire, il n'est plus visible mais est toujours présent (Visible passe à False).
VIII-C-5. Évènements
Au cours de l'exécution:
Quand le formulaire est chargé la procédure Form1_Load() est exécutée.
On pourra donc y mettre le code initialisant la feuille.
(Form_Load se produit AVANT l'affichage du formulaire.)
Private Sub Form1_Load (. . )
End Sub
|
Le formulaire est affiché.
Form1_Activated() est exécuté ensuite car la feuille deviendra active.
Form1.GotFocus() est enfin exécuté puisque la fenêtre prend le focus (un contrôle qui a le focus est celui qui reçoit les évènements clavier, souris.. Sa barre de titre n'est plus grisée).
Form1.Enter () est exécuté lorsque l'utilisateur entre dans la fenêtre.
Dès qu'une propriété change de valeur un évènement 'PropriétéChanged' se déclenche:
Form1.BackColorChanged se déclenche par exemple quand la couleur du fond change.
Form1.Resized se déclenche quand on modifie la taille de la fenêtre.( c'est intéressant pour interdire certaines dimensions)
Form1.Leave survient quand il y a perte du focus.
Bien sur il existe aussi Form1_Desactivate quand la fenêtre perd le focus et n'est plus active.
Si l'utilisateur ferme la fenêtre:
Form1.Closing se produit avant la fermeture de la fenêtre (on peut annuler cette fermeture en donnant à la variable Cancel la valeur True)
Form1.Closed se produit lorsque la fenêtre est fermée.
Il y en a beaucoup d'autres comme par exemple les évènements qui surviennent quand on utilise la souris (MouveUp, MouseDown, MouseMove) ou le clavier (KeyUp, KeyDown, KeyPress) sur la fenêtre.
Exemple pratique:
-Comment voir 'bonjour' dans un textbox à l'ouverture du formulaire?
Private Sub Form1_Load ()
TextBox1. Text = " bonjour "
End Sub
|
-Comment afficher le formulaire Form1 PUIS une message box affichant "Hello"?
Si on tape:
Private Sub Form1_Load (
MsgBox (" hello " )
End Sub
|
La message box est affichée Avant la fenêtre!! car le formulaire s'affiche après Form-Load!!
Il faut écrire:
Private Sub Form1_Load
Me. Show ()
MsgBox (" hello " )
End Sub
|
Form1 est bien affichée avant la MessageBox.
Si on met le msgbox dans form_ gotfocus ou form_activated, cela boucle car à la sortie de la msgbox le gotfocus et le activated sont effectués de nouveau.
-Comment utiliser le paramètre sender.
Dans Form_Load par exemple sender.ForeColor n'est pas accepté car sender est un objet.
Pour pouvoir utiliser ForeColor, il faut caster l'objet en Form.
Private Sub Form1_Load (ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles MyBase. Load
Dim Couleur As New Color = CType (sender, Form). ForeColor
End Sub
|
VIII-C-6. Méthodes
On a déjà vu que pour faire apparaître une fenêtre il faut utiliser .ShowDialog (pour qu'elle soit modale) ou .Show (pour non modale).
Sachant que Me indique l'instance ou le code est en train de s'exécuter:
Me.Close() ferme le formulaire.
Me.Activate() l'active s'il est visible
Me.Show() affiche un formulaire invisible
Me.Hide() rend la fenêtre invisible.
VIII-C-7. Form et code généré par vb
On se rend compte que quand on dessine une fenêtre Form1 par exemple, VB crée une nouvelle classe 'Class Form1' (Un 'moule' à formulaire!!)
Public Class Form1
End Class
|
Quand on tape Dim f As New Form1(), on crée une instance de la Class Form1. (Un véritable Objet 'formulaire')
Pour les surdoués:
En VB.Net 2005 ou 2008 :
L'onglet Form1.vb contient:
Public Class Form1
Public Sub New ()
InitializeComponent ()
End Sub
End Class
|
On voit que la Class Form1 contient une routine nommée Sub New:
C'est Sub New qui est exécuté quand on instancie la form (On parle de 'constructeur'. La classe Form1 contient donc un constructeur (c'est la Sub New) qui appelle une routine nommée InitialiseComponent:
Pour voir InitializeComponent (le code généré par VB ,celui qui crée le formulaire), il faut, en haut sur la liste déroulant avoir 'Form1', dans ce cas en déroulant la liste à droite, on voit:
Si on clique sur InitializeComponent, l'onglet Form1.Designer.vb apparaît.
On a ainsi accès à InitialiseComponent (et à Dispose) qui sont dans une classe Partielle de Form1.
(A partir de VB 2005, une Classe peut être 'découpée' en Classes partielles)
C'est ici qu'il est indiqué que la Class hérite de System.Windows.Forms.Form et que les contrôles sont crées:
Partial Class Form1
Inherits System. Windows . Forms . Form
< System. Diagnostics . DebuggerNonUserCode ()> _
Protected Overrides Sub Dispose (ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components. Dispose ()
End If
Finally
MyBase. Dispose (disposing)
End Try
End Sub
Private components As System. ComponentModel . IContainer
< System. Diagnostics . DebuggerStepThrough ()> _
Private Sub InitializeComponent ()
Me. Button1 = New System. Windows . Forms . Button
Me. Label1 = New System. Windows . Forms . Label
Me. SuspendLayout ()
Me. Button1 . Location = New System. Drawing . Point (26, 64)
Me. Button1 . Name = " Button1 "
Me. Button1 . Size = New System. Drawing . Size (107, 44)
Me. Button1 . TabIndex = 0
Me. Button1 . Text = " Button1 "
Me. Button1 . UseVisualStyleBackColor = True
|
En conclusion: Il faut comprendre qu'à un formulaire (fenêtre) et aux contrôles qui sont dans ce formulaire correspond du code généré par Vb. Ce code (sur lequel vous n'intervenez habituellement pas ) permet de créer le formulaire et les contrôles.
VIII-C-8. Formulaire d'avant plan, Barre de tache.
Un formulaire d'avant plan est un formulaire qui reste en avant plan, devant les autres formulaires, même si on ne l'utilise pas.
Pour définir au moment de la conception un formulaire en tant que formulaire d'avant-plan d'une application.
- Dans la fenêtre Propriétés, attribuez à la propriété TopMost la valeur true.
Pour définir par code un formulaire en tant que formulaire d'avant-plan d'une application.
- Dans une procédure, attribuez à la propriété TopMost la valeur true.
Par contre, BringToFront ramène la fenêtre au premier plan temporairement: si l'utilisateur clique sur une autre fenêtre, elle passera au premier plan..
Me.ShowInTaskBar= True permet d'afficher l'icone du formulaire dans la barre de tache (Sinon quand on minimise le formulaire, il passe dans une toute petite fenêtre en bas de l'écran).
Dans le chapitre X on apprendra à créer plusieurs formulaires et à les faire communiquer.
VIII-C-9. Formulaire non rectangulaire
Pour créer une fenêtre en forme d'ellispe, on affecte à la Region de la fenêtre un GraphicsPath dans lequel il y a une ellipse.
Il faut le faire dans le constructeur de la Form (Form1, New) et ne pas oublier d'importer Drawing2D.
Imports System. Drawing . Drawing2D
Public Class Form1
Public Sub New ()
InitializeComponent ()
Dim Gr As New GraphicsPath ()
Gr. AddEllipse (0, 0, 250, 350)
Me. Region = New Region (Gr)
End Sub
End Class
|
On peut aussi créer une forme de fenêtre à partir de Points:
Dim Gr As New GraphicsPath ()
Dim Points () As New Point{ New Point (10,10), New Point (20,30). . . . }
Gr. AddLines ( Points
Me. Region = New Region (Gr)
|
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © .
Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|