J'ai créé une classe pour une boîte de dialogue personnalisée.
Public Class CustomMsgBox
'Crée le formulaire principal
Dim Main As New Form
'Crée les boutons
Dim Btn1, Btn2, Btn3 As New Button
'Crée l'étiquette
Dim Lbl As New Label
'Crée la variable de sortie
Dim Output As Integer = 0
Private Sub Load()
'Propriétés du Btn1
Btn1.Location = New Point(168, 69)
Btn1.AutoSize = True
Btn1.AutoSizeMode = AutoSizeMode.GrowOnly
'Propriétés du Btn2
Btn2.Location = New Point(87, 69)
Btn1.AutoSize = True
Btn1.AutoSizeMode = AutoSizeMode.GrowOnly
'Propriétés du Btn3
Btn3.Location = New Point(6, 69)
Btn1.AutoSize = True
Btn1.AutoSizeMode = AutoSizeMode.GrowOnly
'Propriétés du Lbl
Lbl.Location = New Point(12, 19)
Lbl.AutoSize = True
Lbl.AutoEllipsis = True
'Propriétés du formulaire principal
Main.Size = New Size(211, 129)
Main.AutoSize = True
Main.AutoSizeMode = AutoSizeMode.GrowOnly
Main.ShowIcon = False
Main.Controls.Add(Btn1)
Main.Controls.Add(Btn2)
Main.Controls.Add(Btn3)
Main.Controls.Add(Lbl)
'Ajoute des gestionnaires aux boutons
AddHandler Btn1.Click, AddressOf btn1_Click
AddHandler Btn2.Click, AddressOf btn2_Click
AddHandler Btn3.Click, AddressOf btn3_Click
End Sub
Function CstMsgBox(ByRef Msg As String, ByRef Title As String, ByRef B1 As String, Optional ByRef B2 As String = Nothing, Optional ByRef B3 As String = Nothing) As Integer
'Exécute la sous-procédure Load()
Load()
'Définit les valeurs
Lbl.Text = Msg
Btn1.Text = B1
Btn2.Text = B2
Btn3.Text = B3
Main.Text = Title
'Vérifie s'il y a une valeur définie pour Btn2 et Btn3
If Btn2.Text = Nothing Then
Btn2.Hide()
End If
If Btn3.Text = Nothing Then
Btn3.Hide()
End If
'Affiche la boîte de dialogue
Main.Show()
'Attend qu'un bouton soit appuyé
Do Until Output <> 0
Application.DoEvents()
Loop
'Ferme la boîte de dialogue
Main.Close()
Return Output
End Function
Private Sub btn1_Click(ByVal sender As Object, ByVal e As EventArgs)
'Définit la valeur de sortie à 1
Output = 1
End Sub
Private Sub btn2_Click(ByVal sender As Object, ByVal e As EventArgs)
'Définit la valeur de sortie à 2
Output = 2
End Sub
Private Sub btn3_Click(ByVal sender As Object, ByVal e As EventArgs)
'Définit la valeur de sortie à 3
Output = 3
End Sub
End Class
Vous pouvez l'utiliser en tapant ceci :
Dim CMB As New CustomMsgBox
CCMB.CstMsgBox('MSG, 'TITRE, 'BOUTON1, 'Optionnel : BOUTON2, 'Optionnel : BOUTON3)
Ou
Dim CMB As New CustomMsgBox
Select Case CMB.CstMsgBox('MSG, 'TITRE, 'BOUTON1, 'Optionnel : BOUTON2, 'Optionnel : BOUTON3)
Case 1
'Code à exécuter lorsque le bouton1 est pressé
Case 2
'Code à exécuter lorsque le bouton2 est pressé
Case 3
'Code à exécuter lorsque le bouton3 est pressé
End Select