miércoles, 29 de febrero de 2012

20 - Crear formulario MDI Main

Con este tipo de formulario, podremos crear un menú común que será compartido por todas las interfaces de la aplicación.

Esta forma de administrar los menús, permite que todos los formularios que se administran aparezcan solamente en la sección que se a definido para ello.

Para la creación de un Main Menú, se deben seguir los siguientes pasos:

a) Crear un formulario que contendrá los menús que se deben definir.

b) Arrastrar el control MenuStrip al formulario.

c) Crear las opciones de menú que se van a administrar.

En las propiedades del formulario se deben modificar las siguientes propiedades, para que quede completamente definido como formulario contenedor:

WindowState = FormWindowState.Maximized

FormBorderStyle = FixedSingle

ControlBox = False

O bien, se puede hacer mediante líneas de comando, utilizando la siguiente codificación:

Me.WindowState = FormWindowState.Maximized

Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle

Me.ControlBox = False

Ejemplo:

a) Crear un archivo de proyectos Windows Form

b) Arrastrar desde el cuadro de herramientas el control MenúStrip

c) Definir las opciones que va a administra cada menú, para este ejercicio crearemos tres menús.

Archivo.

Abrir

Cerrar

Capturar Información

Información



d) Modificar los parámetros del formularios.

Me.WindowState = FormWindowState.Maximized

Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle

Me.ControlBox = False

e) En el método CerrarToolStripMenuItem_Click que captura el evento CerrarToolStripMenuItem.Click (si no lo ven hagan doble click sobre el menú cerrar que han creado y automáticamente este método se añadira al formulario), dentro del método definir:

Me.Close()

f) Crear el formulario frmAbrir y el formulario frmInformacion.

g) En el formulario frmAbrir agregar las siguientes líneas de código.

Public Shared _Instancia As frmAbrir

Public Shared ReadOnly Property Instancia() As frmAbrir

Get

If _Instancia Is Nothing Then

_Instancia = New frmAbrir

End If

Return _Instancia

End Get

End Property

NOTA: El código antes definido, permite, que se llame un formulario desde el Main Menú, solo una vez, ya que se puede manejar la instancia de llamada del formulario, esto evita que el usuario pueda abrir más de una vez el mismo formulario.

h) Agregar un método al formulario frmAbrir que permita cerrar la instancia del formulario abierto, como se muestra en el siguiente código:

Public Shared Sub InstanciaCerrar()

If Not _Instancia Is Nothing Then

_Instancia.Dispose()

_Instancia = Nothing

End If

End Sub

i) Agregar un botón que permita cerrar el formulario y que invoque al método recién creado


Nombre btnCerrar

Texto Cerrar

Private Sub btnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerrar.Click

InstanciaCerrar()

End Sub

j) Agregar al evento Closing del formulario frmAbrir la llamada al método InstanciaCerrar, como se muestra en la siguientes líneas de código.

Private Sub frmAbrir_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing

InstanciaCerrar()

End Sub

k) En el método AbrirToolStripMenuItem_Click del menú principal, que captura el evento AbrirToolStripMenuItem.Click, agregar las siguientes líneas de código.

Dim frmAbr As frmAbrir = frmAbrir.Instancia

frmAbr.MdiParent = Me

frmAbr.Show()

l) Si se desea que el formulario siempre aparezca en un lugar determinado, se debe agregar en el método load del formulario que se está abriendo las siguientes líneas de código.

Me.StartPosition = FormStartPosition.Manual

Me.Location = New Point(0, 0)

m) En el formulario frmInformacion agregar las siguientes líneas de código.


Public Shared _Instancia As frmInformacion

Public Shared ReadOnly Property Instancia() As frmInformacion

Get

If _Instancia Is Nothing Then

_Instancia = New frmInformacion

End If

Return _Instancia

End Get

End Property

Public Shared Sub InstanciaCerrar()

If Not _Instancia Is Nothing Then

_Instancia.Dispose()

_Instancia = Nothing

End If

End Sub

Private Sub frmAbrir_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.StartPosition = FormStartPosition.Manual

Me.Location = New Point(0, 0)

End Sub

Private Sub btnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerrar.Click

InstanciaCerrar()

End Sub

n) En el método InformaciónToolStripMenuItem_Click del menú principal, que captura el evento InformaciónToolStripMenuItem.Click, agregar las siguientes líneas de código.

Dim frmInf As frmInformacion = frmInformacion.Instancia

frmInf.MdiParent = Me

frmInf.Show()

No hay comentarios: