You are on page 1of 4

Public Class SuperMessageBox Inherits System.Windows.Forms.

Form #Region " Cdigo generado por el Diseador de Windows Forms " Public Sub New() MyBase.New() 'El Diseador de Windows Forms requiere esta llamada. InitializeComponent() 'Agregar cualquier inicializacin despus de la llamada a InitializeComponen t() End Sub 'Form reemplaza a Dispose para limpiar la lista de componentes. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Requerido por el Diseador de Windows Forms Private components As System.ComponentModel.IContainer 'NOTA: el Diseador de Windows Forms requiere el siguiente procedimiento 'Puede modificarse utilizando el Diseador de Windows Forms. 'No lo modifique con el editor de cdigo. Friend WithEvents lblMensaje As System.Windows.Forms.Label <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.lblMensaje = New System.Windows.Forms.Label Me.SuspendLayout() ' 'lblMensaje ' Me.lblMensaje.Location = New System.Drawing.Point(7, 13) Me.lblMensaje.Name = "lblMensaje" Me.lblMensaje.Size = New System.Drawing.Size(427, 42) Me.lblMensaje.TabIndex = 0 Me.lblMensaje.TextAlign = System.Drawing.ContentAlignment.TopCenter ' 'SuperMessageBox ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(442, 100) Me.ControlBox = False Me.Controls.Add(Me.lblMensaje) Me.MaximizeBox = False Me.MinimizeBox = False Me.Name = "SuperMessageBox" Me.ShowInTaskbar = False Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide Me.Text = "SuperMessageBox" Me.TopMost = True Me.ResumeLayout(False)

End Sub #End Region Dim mintAncho As Integer = 100 Dim alstBotones As New ArrayList Dim mstrRetorno As String '''<summary> Agrega un titulo al formulario </summary> '''<param name="Cadena">El titulo a agregar</param> Public Sub AgregarTitulo(ByVal Cadena As String) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''' ' DESCRIPCION DE LAS VARIABLES LOCALES ' (agregar nombre de variables y su descripcin) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''' Me.Text = Cadena End Sub '''<summary> Agrega un boton al formulario </summary> '''<param name="Cadena">El titulo del boton</param> Public Sub AgregarBoton(ByVal Cadena As String) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''' ' DESCRIPCION DE LAS VARIABLES LOCALES ' (agregar nombre de variables y su descripcin) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''' Dim cmdBoton As New System.Windows.Forms.Button cmdBoton.Text = Cadena cmdBoton.Height = 30 : cmdBoton.Width = mintAncho alstBotones.Add(cmdBoton) End Sub '''<summary> Agrega un mensaje al Formulario </summary> '''<param name="cadena">El texto del mensaje</param> Public Sub AgregarMensaje(ByVal cadena As String) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''' ' DESCRIPCION DE LAS VARIABLES LOCALES ' (agregar nombre de variables y su descripcin) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''' lblMensaje.Text = cadena End Sub '''<summary> Disea el MessageBox </summary> '''<returns> Devuelve el campo TEXT del botn presionado</returns> Public Function Mostrar() As String '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''' ' DESCRIPCION DE LAS VARIABLES LOCALES ' cmdBoton : un objeto boton temporal ' intContador : la cantidad de botones del formulario ' intLargo : la suma del largo de todos los botones mas sus esp acios ' intI : contador para el FOR-NEXT

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''' Dim Dim Dim Dim cmdBoton As System.Windows.Forms.Button intContador As Integer = alstBotones.Count intLargo As Integer = intContador * (mintAncho + 10) intI As Integer

'seteamos el largo del formulario + 50 unidades Me.Width = intLargo + 50 'seteamos el largo de la etiqueta del formulario Me.lblMensaje.Width = intLargo 'centramos la etiqueta haciendola comensar en la posicion 25 '(pues se agrego 50, 25 de cada lado al formulario) lblMensaje.Left = 25 'para cada boton del arraylist, iteramos y lo agregamos al formulario 'asignndole el evento EVENTOCLICK que cargara en la variable 'de retorno el contenido del campo TEXT del botn For intI = 0 To intContador - 1 cmdBoton = CType(alstBotones(intI), Button) 'situamos la posicion del boton en base a su orden cmdBoton.Location = New System.Drawing.Point((mintAncho + 10) * intI + 25, 60) 'agregamos el controlador del evento click al boton AddHandler cmdBoton.Click, AddressOf EventoClick 'seteamos al formulario como padre del control. Me.Controls.Add(cmdBoton) Next 'centramos en la pantalla el formulario Me.CenterToScreen() 'lo mostramos y esperamos hasta que se haya presionado un boton 'evento que cerrar el formulario Me.ShowDialog() 'retornamos el valor de la variable de retorno Return mstrRetorno End Function '''<sumary>El evento que controla el click de los botones </sumary> Private Sub EventoClick(ByVal Sender As System.Object, ByVal e As EventArgs) mstrRetorno = CType(Sender, Button).Text Me.Close() End Sub End Class ''despues de pegar esta clase en el form se implementa asi: dim frmMsgBx as new SuperMessageBox dim strRetorno as string frmMsgBx.AgregarTitulo("Elija una opcion") frmMsgBx.AgregarBoton("Imprimir") frmMsgBx.AgregarBoton("Guardar en archivo") frmMsgBx.AgregarBoton("Cancelar")

frmMsgBx.AgregarMensaje("Que desea hacer?") strRetorno = frmMsgBx.Mostrar() Al invocar a Mostrar() aparecera el Messagebox con tres botones y nos retornar el texto del botn presionado, a su vez, para el que le resulte ms cmodo, la clase est hecha de una forma que se le puede agregar fcilmente un metodo que reciva por ejemplo: eltitulo, el mensaje y un arreglo de botones... o tambien se la puede encapsular en otra clase... en fin la idea es darles una herramienta simple y verstil. Este es mi primer aporte a esta lista y espero que les sirva.

You might also like