El control MessageBox
El control MessageBox és una eina fonamental en VB.NET per mostrar missatges, advertències o sol·licitar una confirmació simple a l'usuari. No és pròpiament un "objecte de diàleg comú" com OpenFileDialog, sinó una classe estàtica (o mètode estàtic) que mostra un quadre de missatge modal.
Funcionament MessageBox
El MessageBox s'utilitza principalment mitjançant el seu mètode estàtic Show, la qual cosa significa que no cal crear-ne una instància (amb Dim ... As New). Simplement l'invoques directament des de la classe MessageBox.
La funció principal del MessageBox.Show() és mostrar un missatge i esperar la interacció de l'usuari. Quan es mostra, atura l'execució del codi en segon pla (és modal) fins que l'usuari fa clic a un botó.
Mètode: MessageBox.Show()
El mètode Show té diverses sobrecàrregues (diferents maneres d'invocar-lo) que permeten personalitzar el missatge. La sintaxi més completa i útil té quatre arguments:
MessageBox.Show(text, caption, buttons, icon)
| Argument | Tipus | Descripció |
text |
String |
El missatge principal que es mostra a l'usuari. |
caption |
String |
El text que apareix a la barra de títol del quadre de missatge. |
buttons |
MessageBoxButtons |
Especifica quins botons (p. ex., OK, Yes/No, Abort/Retry/Ignore) es mostren. |
icon |
MessageBoxIcon |
Especifica la icona que es mostra (p. ex., Error, Question, Information). |
Propietats i exemples
Argument MessageBoxButtons (Botons)
Aquest argument defineix els conjunts de botons que l'usuari pot clicar. El valor de retorn de MessageBox.Show() és sempre un DialogResult, que t'indica quin botó ha premut l'usuari.
| Constant | Botons | Retorn del DialogResult |
OK |
OK | DialogResult.OK |
OKCancel |
OK, Cancel | DialogResult.OK o DialogResult.Cancel |
YesNo |
Yes, No | DialogResult.Yes o DialogResult.No |
YesNoCancel |
Yes, No, Cancel | DialogResult.Yes, DialogResult.No, o DialogResult.Cancel |
Exemple d'ús dels botons (YesNo)
Private Sub btnEliminar_Click(sender As Object, e As EventArgs) Handles btnEliminar.Click
Dim resultat As DialogResult
' Mostra el diàleg YesNo i guarda la resposta
resultat = MessageBox.Show( _
"Esteu segur que voleu eliminar aquest registre?", _
"Confirmació d'Eliminació", _
MessageBoxButtons.YesNo, _
MessageBoxIcon.Warning)
' Comprova el resultat per executar una acció
If resultat = DialogResult.Yes Then
' Codi per eliminar el registre
MessageBox.Show("Registre eliminat.")
Else
MessageBox.Show("Operació cancel·lada.")
End If
End Sub
Argument MessageBoxIcon (Icona)
Aquest argument estableix una icona visual que ajuda l'usuari a entendre ràpidament la naturalesa del missatge (error, informació, pregunta, etc.).
| Constant | Descripció | Ús Comú |
Information |
Una 'i' en un cercle. | Informació o actualització amb èxit. |
Error |
Una 'x' en un cercle vermell. | Missatge d'error crític. |
Warning |
Un triangle amb un signe d'exclamació. | Advertència sobre una acció que pot tenir conseqüències. |
Question |
Un signe d'interrogació. | Sol·licita una decisió de l'usuari (sovint amb YesNo). |
Exemple icona (Error)
' En una secció Try/Catch on es produeix un error
Catch ex As Exception
MessageBox.Show( _
"No s'ha pogut connectar a la base de dades." & vbCrLf & "Detall: " & ex.Message, _
"Error de Connexió", _
MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
Argument MessageBoxDefaultButton (Botó per Defecte)
Aquest argument opcional especifica quin botó del quadre de missatge ha de tenir el focus per defecte (el que es premerà si l'usuari prem Enter). Això millora l'accessibilitat i la velocitat d'interacció.
| Constant | Descripció |
Button1 |
El primer botó (l'esquerre) tindrà el focus. |
Button2 |
El segon botó tindrà el focus. |
Button3 |
El tercer botó tindrà el focus. |
Exemple amb botó per defecte
En un diàleg YesNo, volem que No sigui l'opció per defecte per evitar eliminacions accidentals:
Private Sub btnOpcióPerDefecte_Click(sender As Object, e As EventArgs) Handles btnOpcióPerDefecte.Click
' Yes és el Botó 1, No és el Botó 2. Volem que No (Botó 2) sigui el focus per defecte.
Dim resultat As DialogResult = MessageBox.Show( _
"Desa els canvis abans de sortir?", _
"Desar", _
MessageBoxButtons.YesNoCancel, _
MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2) ' <- Aquesta línia ho defineix
If resultat = DialogResult.Yes Then
' Codi per desar
ElseIf resultat = DialogResult.No Then
' Codi per sortir sense desar
' En cas de Cancel, no cal fer res
End If
End Sub