|
Site |
Cours VB.net |
|
|
|
IU, Classe 'Control', évènements. |
|
|
L'interface utilisateur (IU) correspond aux fenêtres et contrôles que voit l'utilisateur dans des fenêtres Windows.
Elle assure le dialogue entre l'homme et la machine. C'est l'Interface Homme Machine (IHM). Sous Windows, c'est l'interface graphique.
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.
Button1.Text="OK" permet par exemple de modifier la propriété Text d'un bouton.
La Classe 'Control':
Les contrôles dit visuel (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 avec représentation visuelle 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. L'utilisateur du logiciel ne la verra pas.
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
chk pour les CheckBox
cbo pour 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’
ButtonOk.Text= "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, il est pas contre visible.
On peut donner la valeur True ou False à cette propriété.
Exemple : désactiver le ButtonOk
ButtonOk.Enabled=False
Visible :
Indique si un contrôle est visible ou non.
ButtonOk.Visible=False fait disparaître le bouton.
Attention pour rendre visible une fenêtre on utilisa 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 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)Indique que TextBox1 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:
C'est une variable String liée à un objet visuel.
Permet de stocker une valeur ou un texte lié à l'objet. Chaque objet a un Tag qui peut contenir du texte.
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.
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.
É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ènement de cet objet.
2 exemples:
1- Quand l'utilisateur clique sur un bouton Ok , la procédure BtOkClick s'effectue.
2- 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 pour le bouton 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 qui a 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 par VB.
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
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:
Private Sub BtOkClick ()
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 <= ERREUR
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
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.
|
|
|
|
|