Skip to main content

Una ToolStrip

Una ToolStrip és un dels components més icònics de les aplicacions d'escriptori. Si el MenuStrip és el lloc on guardem totes les funcions de manera jeràrquica, la ToolStrip és el "drecera" visual per a les accions més freqüents. Una ToolStrip és una barra horitzontal (normalment situada just sota el menú) que conté botons, llistes desplegables o quadres de text que representen les funcions més utilitzades de l'aplicació. Les seves principals característiques són:

  • Iconografia: Es basa principalment en icones (imatges de 16x16 o 24x24 píxels) per estalviar espai i ser intuïtiva.

  • Immediatesa: L'usuari només ha de fer un clic, eliminant la necessitat de navegar per menús desplegables.

  • Flexibilitat: Permet incloure diferents tipus d'elements: ToolStripButton, ToolStripSeparator, ToolStripDropDownButton, i fins i tot ToolStripProgressBar.


Exemple

Anem a crear una barra d'eines al nostre frmPrincipal que permeti:

  1. Obrir una nova finestra filla.

  2. Tancar la finestra filla que estigui activa actualment.

Disseny a Visual Studio

  1. Arrossega un control ToolStrip des del Toolbox al teu formulari pare.

  2. Fes clic a la petita fletxa del control per afegir un Standard Items (això crearà les icones típiques de "Nou", "Obrir", "Guardar").

  3. Per a aquest exemple, ens quedarem amb el botó de Nou (la icona del foli) i en crearem un de nou per a Tancar (una icona de creu roja o simplement text).

Codi per connectar ToolStrip amb finestres MDI

El secret aquí és aprofitar els mètodes que ja hem escrit o utilitzar les propietats del contenidor MDI.

VB.Net
' Dins de frmPrincipal.vb

' BOTÓ NOU: Crea una filla (reutilitzem la lògica anterior)
Private Sub ToolStripButtonNou_Click(sender As Object, e As EventArgs) Handles tsBtnNou.Click
    Dim novaFilla As New frmFill()
    novaFilla.MdiParent = Me
    novaFilla.Show()
End Sub

' BOTÓ TANCAR ACTIVA: Tanca només la que l'usuari està veient
Private Sub ToolStripButtonTancar_Click(sender As Object, e As EventArgs) Handles tsBtnTancar.Click
    ' Comprovem si hi ha alguna filla activa abans d'intentar tancar-la
    If Me.ActiveMdiChild IsNot Nothing Then
        Me.ActiveMdiChild.Close()
    Else
        MessageBox.Show("No hi ha cap finestra activa per tancar.", "Atenció", 
                        MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
End Sub

Com Activar/Desactivar botons?

Una bona interfície no deixa que l'usuari cliqui botons que no funcionaran. Si no hi ha cap finestra filla oberta, el botó "Tancar" de la ToolStrip hauria d'estar desactivat (Enabled = False).

Podem utilitzar l'esdeveniment que hem vist abans, MdiChildActivate:

VB.Net
Private Sub frmPrincipal_MdiChildActivate(sender As Object, e As EventArgs) Handles Me.MdiChildActivate
    ' Si ActiveMdiChild és Nothing, vol dir que no hi ha filles. 
    ' Desactivem el botó de tancar.
    tsBtnTancar.Enabled = (Me.ActiveMdiChild IsNot Nothing)
End Sub

La ToolStrip millora l'experiència d'usuari (UX) perquè:

  • Redueix la càrrega cognitiva (reconeixem icones més ràpid que llegim paraules).

  • Proporciona feedback visual (botons activats o desactivats segons el context).