Site:  Cours VB.net  
3.13 ToolBar StatusBar

Comment mettre une barre de bouton en haut et une barre d'état en bas?

 

La barre de bouton: ToolBar en VB 2003

Voici un exemple classique, sous le menu il y a une barre de bouton: Nouveau, Ouvrir, Enregistrer, Chercher, Imprimer...

Allez chercher dans la boite à outils un contrôle ToolBar, il se place en haut, sous le menu. Mettre aussi un ImageList.(Un contrôle ImageList est un contrôle qui stocke des images, chaque image étant chargée en mode conception et repérée par un numéro  (0,1,2,3..)

Dans le ToolBar mettre dans la propriété ImageList le nom du contrôle ImageList qui contient les images des boutons.

 

Ouvrir la collection Buttons dans la fenêtre des propriétés  de le ToolBar pour pouvoir ajouter ou modifier les boutons:

Vous pouvez ajouter ou enlever des boutons.

Chaque bouton a ses propriétés affichées à droite:

Name    Nom du Bouton  Exemple NewButton.

ImageIndex  donne le numéro de l'image (contenue dans l'Imagelist) qui doit s'afficher dans le bouton.

ToolTipText donne le texte du ToolTip (Carré d'aide qui apparaît quand on est sur le bouton) Il faut aussi que la propriété ShowToolTip de la ToolBar soit à True

 

L'évènement déclenché par le click de l'utilisateur sur un bouton est: ToolBar1_ButtonClick

L'argument e contient les arguments de l'évènement click de la ToolBar. e.Button contient le nom du bouton qui a déclenché l'évènement. Pour chaque nom de bouton on appellera la procédure correspondante: NewDoc(), Open()...

Comme d'habitude il suffit de double-cliquer sur la ToolBar pour faire apparaître ToolBar1_ButtonClick

Voici le code complet:

Private Sub ToolBar1_ButtonClick(ByVal Sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles toolBar1.ButtonClick

If e.Button Is NewButton Then

        NewDoc()

ElseIf e.Button Is OpenButton Then

        Open()

ElseIf e.Button Is SaveButton Then

        Save()

ElseIf e.Button Is PreviewButton Then

        PrintPreview()

...

End If

End Sub

 

Le ToolBar a donc une collection de Buttons, de plus il n'y a qu'une procédure évènement 'Click' unique propre à la ToolBar et pour tous les boutons.

 

Contrôle StatusBar en VB 2003.

La barre d'état se trouve en bas de la fenêtre et affiche des informations relatives aux opérations en cours.

Ajouter  un StatusBar au formulaire. Dans la fenêtre des propriétés du StatusBar, la collection Panels contient les zones d'affichage du StatusBar.

 Dans le code, pour modifier le texte d'une zone faire:

StatusBar1.Panels(0).Text="1715.2F"

 

On remarque (c'est du Net) que le premier panel est panels(0).

 

ToolStrip en VB 2005:

On peut créer une 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.

 

Pour créer la barre ToolStrip, allez la chercher dans la boite à outils.

A la droite de la barre, en mode design, se trouve un menu déroulant qui permet de choisir l'élément à ajouter à la barre:

Cela ajoute des ToolStripLabel, ToolStripButton.... (noter que ce sont des objets spécifiques aux ToolStrip). Chaque élément ajouté est un objet

Ensuite, en cliquant sur chaque élément de la barre, on peut changer ses propriétés (qui apparaissent en bas à droite)

Ici le premier élément à gauche est un label; j'en ai modifié la propriétés (text='Groupe') et j'ai mis une image (il a accepté une icône) dans la propriété 'Image'. Le second élément est un bouton avec une image de stop. 

Dans le code, on a accès aux propriétés de l'élément directement à partir de son nom:

    ToolStripButton1.Text="Ok"

Ou par l'intermédiaire de la barre ToolStrip qui a une collection d'items contenant tous les objets de la barre:

    ToolStrip1.Items.Item (2).Text

A la place de l'index de l'élément dans la barre (ici 2), on peut mettre le nom d'élément.

Evènement déclenché par un click:

1- Comme d'habitude, en double-cliquant sur un élément (le second par exemple qui correspond à un bouton), on se retrouve dans la procédure exécutée quand l'utilisateur clique sur le bouton.

Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click

End Sub

Attention: chaque élément à sa propre procédure évènement.

Ainsi s'il y a un second bouton, il y aura une autre procédure Click:

Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click

End Sub

 

2- On a aussi une procédure unique pour le click sur la barre. 

Private Sub ToolStrip1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStrip1.Click

End Sub

Mais le sender est le ToolStrip; pour savoir dans la routine quel bouton a été cliqué, il faut modifier la sub en indiquant comme Handles le nom de tous les boutons de la barre, ainsi par exemple, on peut savoir quel bouton à été cliqué. 

Private Sub ToolStrip1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click, ToolStripButton2.Click, ToolStripButton3.Click

  Dim Button As System.Windows.Forms.ToolStripItem = CType(sender, System.Windows.Forms.ToolStripItem)

  MsgBox(Button.Name) '

End Sub

 

La barre de bouton peut être mise horizontalement (grâce à la propriété LayoutStyle ).

Avec l'aide du petit bouton permettant les taches courantes sur le ToolStrip, on peut comme ici, incorporer instantanément tous les boutons standards ( nouveau, ouvrir, enregistrer, imprimer, couper, copier, coller. magique!!)

Avec l'aide du petit bouton permettant les taches courantes sur le ToolStrip, on peut  aussi  mettre le ToolStrip dans un conteneur (ToolStripContaineur), en mode design , on voit apparaître dessous des outils permettant de modifier  le conteneur; si on clique sur un des coté (dessous) on a accès aux propriétés du bord. (mais la mise en oeuvre n'est pas facile!!)

 

 

Il n'y a plus de 'groupe de bouton' avec un seul bouton enfoncé, ou du moins j'ai pas trouvé.(On ne peut pas tout avoir!!) par contre, on peut 'enfoncer' ou non un bouton:

.ToolStripButton2.Checked = True

On n'a pas accès à cette propriété (et d'autres) en utilisant les Items  du ToolSTrip.

Comment créer un bouton à bascule:

Lorsqu'un utilisateur clique sur un bouton bascule, ce bouton apparaît enfoncé et conserve cet aspect jusqu'à ce que l'utilisateur clique une nouvelle fois sur le bouton.

toolStripButton.CheckOnClick = True
toolStripButton.CheckedChanged AddressOf EventHandler(toolStripButton_CheckedChanged)
Merci Microsoft (Non testé)

Le ToolStrip contient des objets (button, label..) qui ont chacun leur procédure évènement.

 

StatuStrip en VB 2005:

Pour créer une barre d'état en bas d'un formulaire; remplace les StatusBar.

Peut contenir des ToolStripStatusLabel (Texte ou icone), des ToolStripProgressBar, ToolStripDropDownButton et ToolsStripSplitButton (combinaison d'un bouton standard et d'un bouton déroulant). Il n'y a plus de Panel.