Site:  Cours VB.net  
3.3 Les Boutons.

Ils sont omniprésent dans les 'formulaires'.

 

Créer un bouton :

Cliquer sur ‘Boite à Outils’ à gauche ,( bouton Windows Forms en VB 2003), puis bouton "Button",cliquer dans Form1, déplacer le curseur sans lâcher le bouton, puis lâcher le bouton : un bouton apparaît.

 

 

Modifier ses propriétés:

 

On peut modifier les propriétés dans la fenêtre des propriétés en bas à droite:

 

On peut aussi modifier les propriétés par du code.

 

 

Name est utilisé pour lui donner un nom explicite (BoutonOk BoutonCancel)

 

FlatStyle donne un aspect au bouton (Flat, standard, System, pop Up)

 

En VB 2003

 

En vb2005 et 2008:

 

Standard et System utilisent le thème d'affichage de Windows  que vous avez choisi  dans le panneau de configuration. (Thème Windows XP, personnel..)

Quand on utilise Flat on peut dérouler FlatStyle et choisir dans FlatStyle l'épaisseur du bord et sa couleur (3 et rouge dans notre premier bouton VB 2008).

Enfin on peut choisir la position du texte avec TextAlign. Il a la valeur TopLeft dans le dernier bouton.

 

Text contient le texte a afficher sur le bouton. ForeColor correspond à la couleur de ce texte (BackColor étant la couleur du fond)

Exemple:

button1.Text="Ok" affiche 'Ok' dans le bouton.

 

En VB 2003 et 2005:

Si on y inclut un « & » la lettre qui suit sera soulignée et servira de raccourci clavier. 

Button.Text= "&Ok"  affiche sur le bouton  Ok   et crée le raccourci clavier 'Ctrl O' qui est l'équivalent d'un click sur le bouton.

En VB 2008, il faut que la propriété UseMnemonic du bouton ai la valeur True pour pouvoir utiliser le raccourci clavier et le raccourci, pour "&Ok", est dans ce cas 'O' ou 'Alt O'.

 

TextAlign permet de positionner le texte dans le bouton.

 

Image contient le nom de l’image à afficher sur le bouton (si on veut afficher une image, on le fait en mode Design; noter que quand on distribue l'application, il n'y a pas besoin de fournir le fichier contenant l'image avec l'application ). (ImageAlign permet de positionner l’image sur le bouton, TextAlign fait de même pour le texte.)

 

 

On peut aussi puiser une image dans une ImageList grâce à la propriété ImageList et ImageIndex, on peut ainsi changer d’image.

On clique sur 'Image' dans la fenêtre de propriété, puis sur le petit bouton à droite avec les '...' et on choisi l'image dans les ressources. 

Si le Flatstyle a la valeur 'System' l'image n'apparaît pas.

TextImageRelation permet de définir les relations entre le texte et l'image.

En VB 2008, l'image est chargée dans les ressources. 

Les formats acceptés sont: bmp, gif, jpg, wpf, png.

La propriété BackGroundImage permet aussi de mettre une image de fond.

 

Font contient la police de caractère, sa taille, son enrichissement (gras, italique..)

Truc: quand vous travaillez sur de très petits boutons, changer la propriété Font et choisir une petite taille de caractère (8 par exemple)

 

Exemple:

 

Text= "Ok"

Image= MonProgramme.My.Resources.Resources.BtOk

TextImageRelation=TextBeforeImage

ImageAlign= MiddleRigth

TextAlign= MiddleLeft

 

 

 

Utiliser les évènements:

L’évènement principalement utilisé est Click() : quand l’utilisateur clique sur le bouton la procédure

 

Private Sub Button_Click(..)

 

End Sub

 

est exécutée.

Cette procédure contient le code qui doit être exécuté lorsque l'utilisateur clique sur le bouton.

Le bouton peut être sélectionné grâce à un clic de souris, à la touche ENTRÉE ou à la BARRE d'espacement si le bouton a le focus.
 

 

Créer un bouton Ok ou Cancel:

Parfois il faut permettre aux utilisateurs de sélectionner un bouton en appuyant sur la touche ENTRÉE  même si le bouton n'a pas le focus.

Exemple: Il y a sur la fenêtre un bouton "Ok" qui doit être enfoncé quand l'utilisateur tape 'Enter' au clavier, c'est le bouton qui 'valide' le questionnaire ( et qui le ferme souvent).

Comment faire?

Définissez la propriété AcceptButton  de la Form  en lui donnant le nom du bouton.

Cela permet au formulaire d'avoir le comportement d'une boîte de dialogue.
 

La propriété CancelButton  de la Form  permet de la même manière  de créer un bouton 'Annuler'( qui répond à la touche 'Echap'(ESC).

 

Couleur transparent dans les images des boutons:

On a vu qu'on pouvait mettre une image dans un bouton , il faut pour cela donner à la propriété Image le nom du fichier contenant l'image, ceci en mode Design. En VB 2008, elle est chargée dans les ressources. 

Mais l'image est souvent dans un carré et on voudrait ne pas voir le fond (rendre la couleur du tour de l'image transparente)

Dans Visual Basic 6.0 on chargeait l'image un fichier .bmp. La propriété MaskColor  était utilisée pour définir une couleur qui devait devenir transparente (ici le jaune), permettant ainsi l'affichage d'un bouton ayant l'aspect suivant.

Mais dans Visual Basic .NET, il n'existe pas d'équivalent direct de la propriété MaskColor!! 

On peut résoudre le problème:

1- On peut créer une image Gif avec un fond Transparent (créer avec le logiciel gratuit 'PhotoStyle'), Vb 2005 ou 2008 n'affichent pas le transparent autour.

2- Si on a une image avec un fond jaune ou d'une autre couleur, on peut ruser et définir la transparence:

Dans le " Code généré par le Concepteur Windows Form " après la définition du bouton  ou dans Form_Load ajouter:

Dim g As New System.Drawing.Bitmap(Button1.Image)

g.MakeTransparent(System.Drawing.Color.Yellow)

Button1.Image = g

On récupère dans un Bitmap l'image du bouton, on indique que le jaune doit être transparent, on remet le BitMap dans l'image.

Bien sur il y a intérêt à choisir une couleur (toujours la même) qui tranche pour les fonds de dessin et ne pas l'utiliser dans le dessin lui même.

 

 

Utilisation avancée: Créer de magnifique bouton en VB2005:

On peut créer des boutons avec ses propres images:

Exemple donné par Microsoft: 

Pour faire cela il faut créer le dessin, le mettre en fond et paramétrer correctement le bouton.

1-Mettre le dessin dans les ressources:

Aller dans les ressources (ensemble d'éléments,: images, textes, sons.. qui seront incorporés dans le programme.)

(Pour cela double cliquez sur MyProjet dans l'explorateur de solution ou menu 'Projet'=>'Propriétés de..', Onglet 'Ressources')

Dérouler la liste à gauche pour y mettre 'Images' puis cliquer sur 'ajouter une ressource'; on vous demande le nom de la ressource (tapez par exemple 'button_blue'), vous vous trouver dans Paint, dessinez (ou collez) l'image de votre bouton. Puis menu 'Fichier'=>'Enregistrer': le dessin apparaît dans les ressources. Fermez Paint.

2-Mettre ce dessin comme fond du bouton:

MyButton.BackGroundImage= MonProgramme.My.Ressources.Ressources.button_Blue

(ou modifier cette propriété BackGroundImage dans la fenêtre de propriétés à droite)

 

2-Modifier les propriétés du bouton dans la fenêtre de propriétés:

 

En effet l'image de la ressources n'a pas la même taille que le bouton, de plus le dessin du bouton standard apparaît!!

MyButton.BackGroundImageLayout= Stretch  'met le dessin à la taille du bouton.

MyButton.FlatStyle= Flat  'fait disparaître des éléments du bouton standard.

MyButton.BackColor= Transparent  'Efface le fond du bouton standard.

MyButton.Text= "Importer Image'  'met le texte.

 

Super, c'est beau!!

 

 

On peut aussi en VB 2003 ou VB2005 personnaliser ses boutons.

Un exemple:

Voir 5-3.htm c'est un peu complexe!!

 

 

 

Utilisation avancée: Création d'un bouton par code:

L'exemple suivant crée un Button nommé Button1  sur lequel on voit "Ok", on modifie certaines de ses propriétés et on l'ajoute à Form.
 
Private Sub InitializeMonButton()
Dim button1 As New Button1()
button1.Text="Ok"
' Ajouter le bouton à la Form
Controls.Add(button1)
End Sub

Il faut par code créer aussi les évènements liés à ce bouton: dans ce cas il faut déclarer le bouton  plutôt avec la syntaxe contenant WithEvents et en haut du module.

Private WithEvents Button1 As New Button

(dans ce cas on ne remet pas la ligne Dim button1 dans la Sub InitializeMonButton)

Puis écrire la sub évènement.

Sub OnClique ( sender As Objet, EvArg As EventArgs) Handles Button1

End Sub 

Ainsi VB sait que pour un évènement sur le Button1 , il faut déclencher la Sub OnClique.

(On reviendra sur cela)