MessageBox Personalizado

Acá les dejo una clase que nos permitirá, personalizar el MessageBox. Se puede personalizar tanto, como los Botones, Titulo, Iconos. La Clase esta comentada casi en su totalidad. Si tienen alguna duda no duden en comentarlo que en la brevedad de lo posible les responderé sus dudas.

Imports System
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Windows.Forms

Public Class clsConfigMessageBox
#Region "Variables para el Mensaje ..."
Private Shared ObjWinMessage As clsConfigMessageBox

Private Shared WithEvents CmdOk As Button 'Para el Boton Aceptar en los MessageBox
Private Shared WithEvents CmdYes As Button 'Para el Boton Si en los MessageBox
Private Shared WithEvents CmdNo As Button 'Para el Boton No en los MessageBox
Private Shared WithEvents CmdCancel As Button 'Para el Boton Cancelar en los MessageBox
Private Shared WithEvents CmdAbort As Button 'Para el Boton Abortar en los MessageBox
Private Shared WithEvents CmdRetry As Button 'Para el Boton Reintentar en los MessageBox
Private Shared WithEvents CmdIgnore As Button 'Para el Boton Ignorar en los MessageBox

Private Shared WithEvents WinMsg As Form 'Para crear la forma del MessageBox
Private Shared WithEvents LblHeader As Label 'Label para el Titulo del MessageBox
Private Shared PicIcon As PictureBox 'Para el icono del Mensaje del MessageBox
Private Shared WithEvents WinMessage As Label 'Para el Contenido del MessageBox

Private Shared MaxWidth As Integer = SystemInformation.WorkingArea.Width 'Maximo acho del MessageBox
Private Shared MaxHeight As Integer = SystemInformation.WorkingArea.Height 'Maximo alto del MessageBox

'Inicializacion de la variables
Private Shared FormWidth As Integer = 0
Private Shared FormHeight As Integer = 0

Private Shared HeaderWidth As Integer = 0

Private Shared MsgWidth As Integer = 0
Private Shared MsgHeight As Integer = 0

Private Shared WinReturn As Integer = 0

'Tipo de Letra, Tamaño y Estilo de la Fuente Default
Private Shared WinFnt As New Font("Arial", 9, FontStyle.Regular)
Private Shared WinLocation As Point

Private Shared FormSize As Size 'Tamaño del MessageBox
Private Shared MessageSize As Size 'Tamaño del Contenido del MessageBox

Private Shared WinButtons As MessageBoxButtons 'Contendra los o el boton que tendra el Mensaje por Ejemplo: Si, No, Cancelar.
Private Shared WinDefault As MessageBoxDefaultButton 'Almacenara el Boton Default del MessageBox

Private Shared WinResult As DialogResult 'Almacenara el resultado del MessageBox, que seria por ejemplo cuando se de clic en algun boton
Private Shared WinMake As DialogResult

'Se inicializa la variable del contenido del Mensaje y el Titulo
Private Shared MessageText As String = ""
Private Shared HeaderText As String = ""
#End Region

#Region "Constructor de la clase"
Private Sub New()
WinMsg = New Form()
End Sub
#End Region

'Funcion que crea o emite el MessageBox
Public Shared Function ShowWinMessage(ByVal WinText As String, Optional ByVal WinHeader As String = "", _
Optional ByVal WinIcon As MessageBoxIcon = MessageBoxIcon.None, _
Optional ByVal WinButtons As MessageBoxButtons = MessageBoxButtons.OK, _
Optional ByVal WinDefault As MessageBoxDefaultButton = MessageBoxDefaultButton.Button1) As DialogResult

WinResult = MakeMessage(WinText, WinHeader, WinIcon, WinButtons, WinDefault)
Return WinResult

End Function

Private Shared Function MakeMessage(ByVal WinText As String, Optional ByVal WinHeader As String = "", _
Optional ByVal WinIcon As MessageBoxIcon = MessageBoxIcon.None, Optional ByVal WinButtons As MessageBoxButtons = MessageBoxButtons.OK, _
Optional ByVal WinDefault As MessageBoxDefaultButton = MessageBoxDefaultButton.Button1) As DialogResult

ObjWinMessage = Nothing
ObjWinMessage = New clsConfigMessageBox()

MessageText = "" : MessageText = WinText 'Se establece el Mensaje del MessageBox
HeaderText = "" : HeaderText = WinHeader 'Se establece el Titulo del MessageBox

'Se inicializan la variables
FormWidth = 0 : FormHeight = 0
HeaderWidth = 0
MsgWidth = 0 : MsgHeight = 0
WinReturn = 0

'Comprueba si la longitud del Texto Mensaje y Titulo sea igual a Cero
If MessageText.Trim().Length = 0 And HeaderText.Trim().Length = 0 Then
FormSize = New Size(305, 135) 'Se establece el tamaño del formulario
FormWidth = 305 : FormHeight = 135 'Se establece el ancho y alto del formulario
WinMsg.Size = New Size(FormSize.Width, FormSize.Height) 'Se establece el tamaño de la forma base
GoTo Mess 'Se sale de esta desicion y se va asta la linea Mess
End If

HeaderWidth = TamañoCadena(HeaderText.Trim(), MaxWidth, WinFnt).Width 'Se establece el ancho del TITULO
MessageSize = TamañoCadena(MessageText.Trim(), MaxWidth, WinFnt) 'Se establece el tamaño (Alto y Ancho) del Mensaje
MsgWidth = MessageSize.Width : MsgHeight = MessageSize.Height 'Se establece el ancho del Mensaje

'Si el Tamaño o Longitud del Titulo es mayor de 0 y el Mensaje es Igual a 0
If HeaderText.Trim().Length > 0 And MessageText.Trim().Length = 0 Then
HeaderWidth = HeaderWidth + 80 'Se establece el ancho del Titulo
WinReturn = Math.Max(HeaderWidth, 305) 'Se establece el ancho que tendra el formulario
FormSize = New Size(WinReturn, 135) 'Se establece el tamaño (ancho y alto) del formulario
FormWidth = FormSize.Width : FormHeight = FormSize.Height 'Se establece el Ancho y Alto del formulario
GoTo Mess 'Se sale de esta desicion y se va asta la linea Mess
End If

HeaderWidth = HeaderWidth + 80 'Se establece el ancho del Label (Titulo)
FormWidth = MsgWidth + 60 'Se establece el ancho del formulario
FormHeight = MsgHeight + 120 'Se establece el alto del formulario

'Si el Tamaño o Longitud del Titulo es igual a 0 y el Mensaje es Mayor a 0
If HeaderText.Trim().Length = 0 And MessageText.Trim().Length > 0 Then
FormWidth = Math.Max(FormWidth, 305) 'Se establece el Ancho del Formulario
FormHeight = Math.Max(FormHeight, 135) 'Se establece el Alto del Formulario
FormSize = New Size(FormWidth, FormHeight) 'Se establece el Tamaño (Ancho y Alto) del Formulario
FormWidth = FormSize.Width : FormHeight = FormSize.Height 'Se establece el Ancho y Alto del Formulario
GoTo Mess 'Se sale de esta desicion y se va asta la linea Mess
End If

'Si el Tamaño o Longitud del Titulo es mayor de 0 y el Mensaje es Mayor de 0
If HeaderText.Trim().Length > 0 And MessageText.Trim().Length > 0 Then
WinReturn = Math.Max(HeaderWidth, FormWidth) 'Retorna el Ancho del Formulario
FormWidth = Math.Max(WinReturn, 305) 'Se establece el Ancho del Formulario
FormHeight = Math.Max(FormHeight, 135) 'Se establece el Alto del Formulario
FormSize = New Size(FormWidth, FormHeight) 'Se establece el Tamaño (Ancho y Alto) del Formulario
FormWidth = FormSize.Width : FormHeight = FormSize.Height 'Se establece el Ancho y Alto del Formulario
GoTo Mess 'Se sale de esta desicion y se va asta la linea Mess
End If

Mess:
Call CrearBasePantalla() 'Se llama al procedimiento que crea la Base del Formulario del MessageBox

Call CrearTitulo() 'Se llama al procedimiento que crea el Titulo del MessageBox
Call CrearIconoMensaje() ' Se llama al procedimiento que crea el Icono del Mesaje
Call CrearMensaje() 'Se llama al procedimiento que crea el Cuerpo o el Mensaje a mostrar del MessageBox

Call AñadiraPantallaBase() 'Se añaden al formulario base el Titulo, Mensaje e Icono creados anteriormente.

WinMessage.Text = WinText 'Se establece el Mensaje
LblHeader.Text = WinHeader 'Se establece el Titulo

'Se selecciona el Icono a mostrar en el MessageBox (Aca se puede cambiar por una imagen de nuestra preferencia)
Select Case WinIcon
Case MessageBoxIcon.Asterisk 'En Caso que se seleccione Asterisco
PicIcon.Image = Drawing.SystemIcons.Asterisk.ToBitmap() 'Se selecciona los iconos default del MessageBox Normal que estan guardados en Drawing.SystemIcons
'PicIcon.Image = La imagen de tu preferencia asi se puede cambiar en cada uno de los iconos
Case MessageBoxIcon.Error
PicIcon.Image = Drawing.SystemIcons.Error.ToBitmap()
Case MessageBoxIcon.Exclamation
PicIcon.Image = Drawing.SystemIcons.Exclamation.ToBitmap()
Case MessageBoxIcon.Hand
PicIcon.Image = Drawing.SystemIcons.Hand.ToBitmap()
Case MessageBoxIcon.Information
PicIcon.Image = Drawing.SystemIcons.Information.ToBitmap()
Case MessageBoxIcon.None
PicIcon.Image = Nothing
Case MessageBoxIcon.Question
PicIcon.Image = Drawing.SystemIcons.Question.ToBitmap()
Case MessageBoxIcon.Stop
PicIcon.Image = Drawing.SystemIcons.Error.ToBitmap()
Case MessageBoxIcon.Warning
PicIcon.Image = Drawing.SystemIcons.Warning.ToBitmap()
End Select

Call CrearBotonesMensajes(WinButtons)
WinMsg.ShowDialog()

Return WinMake

End Function

'Se crea la Forma Basica del MessageBox
Private Shared Sub CrearBasePantalla()

With WinMsg
.Text = "" 'Se vacia el Titulo de la forma del MessageBox
.Size = New Size(FormWidth, FormHeight) 'Se establece el tamaño del formulario
.StartPosition = FormStartPosition.CenterParent 'Se establece la posicion inicial del formulario en tiempo de ejecucion
.FormBorderStyle = FormBorderStyle.None 'Se establece el estilo del borde del formulario
.ShowInTaskbar = False : .ShowIcon = False 'Se establece que el formulario no se mostrara en la barra de tareas y que el Icono no aparecera en el Titulo
.Opacity = 0.85 'Se establece el nivel de opacidad del formulario.
.Font = WinFnt 'Se establece la fuente del formulario
End With

End Sub

'Procedimiento que crea el Label para el Titulo del MessageBox
Private Shared Sub CrearTitulo()

LblHeader = New Label()

With LblHeader
.Text = "" 'Se establece el Texto del Titulo en vacio.
.AutoSize = False 'Se establece que el control no cambie automaticamente el tamaño para mostrar el contenido.
.Dock = DockStyle.Top 'Se establece que los bordes del Label (Titulo) se acoplaran a su contrl principal (Formulario Base)
.BackColor = Color.Transparent 'Se establece el color de fondo del Label (Titulo)
.TextAlign = ContentAlignment.MiddleLeft 'Se establce la alineacion del texto del Label (Titulo) en la izquierda.
.Height = 24 'Se establece el alto del Label (Titulo)
.Font = WinFnt 'Se establece la fuente del Label (Titulo)
.SendToBack() 'Envia el Label (Titulo) al final del orden Z
.Visible = True 'Se pone visible el Label (Titulo)
End With

End Sub

'Procedimiento que crea el Icono del MessageBox
Private Shared Sub CrearIconoMensaje()

PicIcon = New PictureBox()

With PicIcon
.Size = New Size(35, 35) 'Se establece el tamaño alto y ancho del icono del MessageBox
.Location = New Point(8, 32) 'Establece la posicion donde estara ubicado el icono del MessageBox
.BackColor = Color.Transparent 'Establece el color de fondo del icono del MessageBox
.BorderStyle = BorderStyle.None 'Establece el estilo del borde para el icono del MessageBox
.SendToBack() 'Envia el icono o imagen al final del orden Z
.Visible = True 'Se pone visible el icono o imagen del MessageBox
End With

End Sub

'Procedimiento que crea el Cuerpo o el Mensaje a mostrar en el MessageBox
Private Shared Sub CrearMensaje()

WinMessage = New Label()

With WinMessage
.Text = "" 'Se establece el Texto del Mensaje en vacio.
.Size = New Size(MsgWidth, MsgHeight) 'Se establece el tamaño alto y ancho del Label (Mensaje) del MessageBox
.Location = New Point(48, 32) 'Establece la posicion donde estara ubicado el Label (Mensaje)
.AutoSize = False 'Se establece que el Label (Mensaje) no cambie automaticamente el tamaño para mostrar el contenido.
.Font = WinFnt 'Se establece la fuente del Label (Mensaje)
.TextAlign = ContentAlignment.TopLeft 'Se establce la alineacion del texto del Label (Titulo) en la izquierda.
.BackColor = Color.Transparent 'Se establece el color de fondo del Label (Mensaje)
.SendToBack() 'Envia el Label (Mensaje) al final del orden Z
.Visible = True 'Se pone visible el Label (Mensaje)
End With

End Sub

'Procedimiento que añade al formulario base el Titulo, Icono y Mensaje.
Private Shared Sub AñadiraPantallaBase()

With WinMsg
.Controls.Add(LblHeader) 'Se añade el Label Titulo
.Controls.Add(PicIcon) 'Se añade el Icono
.Controls.Add(WinMessage) 'Se añade el Mensaje
.Refresh()
End With

End Sub

'Funcion donde se crear, se ubican y se les da el tamaño correcto a los botones. Segun la opcion que se seleccione
Private Shared Sub CrearBotonesMensajes(ByVal WinButtons As MessageBoxButtons)

Select Case WinButtons
'En caso que se seleccione Abortar, Reintentar e Ignorar, ubica los botones segun el tamaño del formulario
Case MessageBoxButtons.AbortRetryIgnore
If FormWidth = 135 Then
CmdAbort = New Button()
Call BotonPropiedades(CmdAbort, "&Abortar", New Size(65, 24), New Point(FormWidth - (109 * 2), FormHeight - 65))
CmdRetry = New Button()
Call BotonPropiedades(CmdRetry, "&Reintentar", New Size(65, 24), New Point(CInt(FormWidth - (75.5 * 2)), FormHeight - 65))
CmdIgnore = New Button()
Call BotonPropiedades(CmdIgnore, "&Ignorar", New Size(65, 24), New Point(FormWidth - 85, FormHeight - 65))
Exit Select
End If
End If
'En caso que se seleccione Aceptar, ubica el boton segun el tamaño del formulario
Case MessageBoxButtons.OK
If FormWidth = 135 Then
CmdOk = New Button()
Call BotonPropiedades(CmdOk, "&Aceptar", New Size(65, 24), New Point(FormWidth - 85, FormHeight - 65))
Exit Select
End If
End If
'En caso que se seleccione Aceptar y Cancelar, ubica los botones segun el tamaño del formulario
Case MessageBoxButtons.OKCancel
If FormWidth = 135 Then
CmdOk = New Button()
Call BotonPropiedades(CmdOk, "&Aceptar", New Size(65, 24), New Point(CInt(FormWidth - (75.5 * 2)), FormHeight - 65))
CmdCancel = New Button()
Call BotonPropiedades(CmdCancel, "&Cancelar", New Size(65, 24), New Point(FormWidth - 85, FormHeight - FormHeight - 65))
Exit Select
End If
End If
'En caso que se seleccione Reintentar y Cancelar, ubica los botones segun el tamaño del formulario
Case MessageBoxButtons.RetryCancel
If FormWidth = 135 Then
CmdRetry = New Button()
Call BotonPropiedades(CmdRetry, "&Reintentar", New Size(65, 24), New Point(CInt(FormWidth - (75.5 * 2)), FormHeight - 65))
CmdCancel = New Button()
Call BotonPropiedades(CmdCancel, "&Cancelar", New Size(65, 24), New Point(FormWidth - 85, FormHeight - 65))
Exit Select
End If
End If
'En caso que se seleccione Si y No, ubica los botones segun el tamaño del formulario
Case MessageBoxButtons.YesNo
If FormWidth = 135 Then
CmdYes = New Button()
Call BotonPropiedades(CmdYes, "&Si", New Size(65, 24), New Point(CInt(FormWidth - (75.5 * 2)), FormHeight - 65))
CmdNo = New Button()
Call BotonPropiedades(CmdNo, "&No", New Size(65, 24), New Point(FormWidth - 85, FormHeight - 65))
Exit Select
End If
End If
'En caso que se seleccione Si, No y Cancelar, ubica los botones segun el tamaño del formulario
Case MessageBoxButtons.YesNoCancel
If FormWidth = 135 Then
CmdYes = New Button()
Call BotonPropiedades(CmdYes, "&Si", New Size(65, 24), New Point(FormWidth - (109 * 2), FormHeight - 65))
CmdNo = New Button()
Call BotonPropiedades(CmdNo, "&No", New Size(65, 24), New Point(CInt(FormWidth - (75.5 * 2)), FormHeight - 65))
CmdCancel = New Button()
Call BotonPropiedades(CmdCancel, "&Cancelar", New Size(65, 24), New Point(FormWidth - 85, FormHeight - 65))
Exit Select
End If
End If
End Select
End Sub

'Procedimiento con las Propiedades del Boton
Private Shared Sub BotonPropiedades(ByVal Btn As Button, ByVal Txt As String, ByVal Sz As Size, ByVal Lc As Point)

With Btn
.BringToFront() 'Coloca el boton al principio del orden Z
.Size = Sz 'Se establece el alto y ancho del Boton
.Text = Txt 'Se coloca el texto que tendra el Boton
.BackColor = Color.Transparent 'Se establece el Color de fondo del Boton
.FlatAppearance.BorderSize = 0 'Establece el valor que especifica el tamaño, en pixeles, del borde alrededor del boton
.FlatStyle = FlatStyle.Standard 'Establece la apariencia del estilo plano del boton
.Location = Lc 'Establece la posicion del Boton
.Anchor = AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right 'Se establece el borde del contenedor al que esta enlazado el boton
.TextAlign = ContentAlignment.MiddleCenter 'Se establece la alineacion del texto del boton en el Centro
.Font = New Font("Arial", 8, FontStyle.Regular) 'Se establece el tamaño, nombre Fuente y Estilo del Texto del Boton
.Visible = True 'Se pone visible el Boton
End With

WinMsg.Controls.Add(Btn) 'Se agregar el boton en el formulario del Mensaje

End Sub

'Funcion que devuelve el tamaño de la cadena
Private Shared Function TamañoCadena(ByVal WinMsgText As String, _
ByVal WinWdth As Integer, _
ByVal WinFnt As Font) As Size

Dim GRA As Graphics = WinMsg.CreateGraphics()
Dim SZF As SizeF = GRA.MeasureString(WinMsgText, WinFnt, WinWdth) 'Mide la cadena especificada al dibujarla
GRA.Dispose() 'Libera los recursos usados por GRA

Dim SZ As New Size(Convert.ToInt16(SZF.Width + 100), _
Convert.ToInt16(SZF.Height)) 'Establece el ancho y alto de la cadena

Return SZ 'Devuelve el tamaño (ancho y alto) de la cadena

End Function

'Procedimiento para dibujar el area donde ira el Mensaje y el icono del MessageBox
Private Shared Sub WinMsg_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles WinMsg.Paint

Dim MGraphics As Graphics = e.Graphics 'Variable donde se almacenara el grafico
Dim MPen As New Pen(Color.FromArgb(96, 155, 173), 1) 'Variable donde se almacenara el grosor y el color de la linea

Dim Area As New Rectangle(0, 0, WinMsg.Width - 1, WinMsg.Height - 1) 'Variable que almacena un rectangulo
Dim LGradient As New LinearGradientBrush(Area, Color.FromArgb(166, 197, 227), Color.FromArgb(245, 251, 251), LinearGradientMode.BackwardDiagonal) 'Variable que almacenara los colores que se usaran en el Gradiente, como ba a ser ese gradiente y a que se va a aplicar ese gradiente
MGraphics.FillRectangle(LGradient, Area) 'Se rellena el rectangulo con el Gradiente
MGraphics.DrawRectangle(MPen, Area) 'Se dibuja el rectangulo ya con el gradiente aplicado y los bordes que se han configurado en la varibale MPen

End Sub

Private Shared Sub LblHeader_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LblHeader.MouseDown

WinLocation = e.Location 'Variable donde se almacenara la Localizacion del Label cuando se pase el mouse por encima

End Sub

'Cuando se mueve el MessageBox con el Mouse a otra posicion
Private Shared Sub LblHeader_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LblHeader.MouseMove

'Si el boton presionado es el Derecho sobre el Titulo del MessageBox
If String.Compare(Control.MouseButtons.ToString(), "Left") = 0 Then
Dim MSize As New Size(WinLocation)
MSize.Width = e.X - WinLocation.X 'Se almacena en la posicion X donde esta actualmente el formulario
MSize.Height = e.Y - WinLocation.Y 'Se almacena en la posicion Y donde esta actualmente el formulario
WinMsg.Location = Point.Add(WinMsg.Location, MSize) 'Se ubica el formulario en la nueva posicion
End If

End Sub

'Procedimiento para dibujar el area donde ira el Titulo del MessageBox
Private Shared Sub LblHeader_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles LblHeader.Paint

Dim MGraphics As Graphics = e.Graphics 'Variable donde se almacenara el grafico final
Dim MPen As New Pen(Color.FromArgb(96, 155, 173), 1) 'Variable donde se almacenara el grosor y el color de la linea

Dim Area As New Rectangle(0, 0, LblHeader.Width - 1, LblHeader.Height - 1) 'Variable que almacena un rectangulo
Dim LGradient As New LinearGradientBrush(Area, Color.FromArgb(166, 197, 227), Color.FromArgb(245, 251, 251), LinearGradientMode.BackwardDiagonal) 'Variable que almacenara los colores que se usaran en el Gradiente, como ba a ser ese gradiente y a que se va a aplicar ese gradiente
MGraphics.FillRectangle(LGradient, Area) 'Se rellena el rectangulo con el Gradiente
MGraphics.DrawRectangle(MPen, Area) 'Se dibuja el rectangulo ya con el gradiente aplicado y los bordes que se han configurado en la varibale MPen

Dim DrawFont As New Font("Consolas", 10, FontStyle.Regular) 'Se almacena el nombre, el tamaño y el estilo de la fuente para el Titulo
Dim DrawBrush As New SolidBrush(Color.Black) 'Se almacena el color de la fuente del Titulo
Dim DrawPoint As New PointF(2.0F, 3.0F) 'Se almacena la posicion donde estara el Titulo

Dim DrawGradientBrush As New LinearGradientBrush(e.Graphics.ClipBounds, Color.White, _
Color.FromArgb(122, 158, 226), LinearGradientMode.ForwardDiagonal) 'Se crea un Gradiente Lineal

e.Graphics.DrawString(HeaderText.ToString(), DrawFont, DrawBrush, DrawPoint) 'Se dibuja el Titulo con los datos anteriormente configurados

End Sub

Private Shared Sub CmdAbort_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdAbort.Click

WinMsg.Dispose() : WinMsg = Nothing
WinMake = DialogResult.Abort

End Sub

Private Shared Sub CmdCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdCancel.Click

WinMsg.Dispose() : WinMsg = Nothing
WinMake = DialogResult.Cancel

End Sub

Private Shared Sub CmdIgnore_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdIgnore.Click

WinMsg.Dispose() : WinMsg = Nothing
WinMake = DialogResult.Ignore

End Sub

Private Shared Sub CmdNo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdNo.Click

WinMsg.Dispose() : WinMsg = Nothing
WinMake = DialogResult.No

End Sub

Private Shared Sub CmdOk_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdOk.Click

WinMsg.Dispose() : WinMsg = Nothing
WinMake = DialogResult.OK

End Sub

Private Shared Sub CmdRetry_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdRetry.Click

WinMsg.Dispose() : WinMsg = Nothing
WinMake = DialogResult.Retry

End Sub

Private Shared Sub CmdYes_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdYes.Click

WinMsg.Dispose() : WinMsg = Nothing
WinMake = DialogResult.Yes

End Sub
End Class

 

Cree una forma y llame la clase y la función así..

clsConfigMessageBox.ShowWinMessage()

Para el ejemplo creare una forma con un botón que me permita llamar el mensaje personalizado por medio del botón y me imprima el mensaje “Aca iria el contenido o cuerpo del Mensaje” y como titulo “¡Este es el Titulo del Mensaje!”

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
clsConfigMessageBox.ShowWinMessage("Aca iria el contenido o cuerpo del Mensaje", "¡Este es el Titulo del Mensaje!", Windows.Forms.MessageBoxIcon.Warning, Windows.Forms.MessageBoxButtons.YesNoCancel)
End Sub

Puedes bajar el ejemplo de Aca. Requisitos (Microsoft Visual Studio 2010)


9 Responses

  1. leba dice:

    Button não funcionam ?
    help

  2. Cardila dice:

    Hola Amigo… Muy interesante. Me gustaria saber si se puede correr este ejemplo en Visual Express 2008.

    Muchas Gracias.

  3. Jorge dice:

    Muchisimas gracias, esta muy buena. Una pregunta. ¿Como hago para modificar el icono? Por que entre en el case y modifique el case de .warning y lo deje asi:
    PicIcon.Image = Image.FromFile(My.Application.Info.DirectoryPath & “\1.ico”)
    Pero no funciona.. y le puse un msgbox(“aca estoy”) para saber si pasa por ahi, y no es asi.

  4. jose luis dice:

    Hola, lo puse en vb.net pero da errores en algunos if, si quito los “end if” que me marca están de más, no aparecen los botones. Alguna idea a que se puede deber?

    • Roberto dice:

      A mi me pasa lo mismo, quito los if y luego no me muestra los botones. ¿alguien sabe el por que?

      Gracias

      • ROBIN dice:

        NO me funcionan los botones de si no cancelar y esas cosas, yo copie el codigo en un proyecto de vb y no me da la opcion de cerrar el cuadro del mensaje como lo corrijo, lo unico que le modifique fueron los end if que tiuene repetidos y visual estudio lo toma como error de sitaxis,m gracia spor tu colaboracion… mi correo robinramirez1985@hotmail.com dejo mi numero de whatsapp en colombia para compartir conocimientos +573175125693 deseo hacer un grupo de programacion

    • ryan dice:

      También me sale ese error alguien sabe como resolverlo, lo necesito urgente.

  5. Cristhoper dice:

    Funciona 10 puntos, muchas gracias.

  6. wmuller dice:

    Muchas gracias de mucha Utilidad… Como puedo personalizar los iconos o sea usar iconos propios. ejemplo un logo de la compania
    Gracias Nuevamente

  7. Kevin dice:

    muy bueno tu post! gracias por comparirlo (y)

    para los que quieren la imagen desde resource:

    PicIcon.Image = My.resource._Imagen
    donde “_Imagen” es el nombre de la imagen a la cual quieren añadir a al picturebox!

  8. Pablo Gutiérrez dice:

    460 líneas de código para que un MSGBOX cambie 3 palabras

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Visual Basic y mucho más
CyberChimps