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:
Publicar un comentario