BANNER

Seo Services

MDI Container VS

MDI Container VS

Un formulario MDI es un formulario (llamado "Padre" o "Parent") que puede contener otros formularios (llamados "Hijos" o "Child").
Para empezar creamos un proyecto "Windows Application" en VB, de forma automàtica se crea un formulario con nombre "Form1" lr pongo de texto Ejemplo MDI y en la ventana Propiedades, se busca la propiedad "IsMDIContainer" y se cambia a "True" tal como se muestra:

Ahora para hacerlo mas funcional o mas común se añadirá un MenuStrip 
y después se definen entradas para el menú tal como se muestra

y ahora agregamos dos formularios mas al proyecto, que seran Form2 y Form3
En el Solution Explorer para el proyecto MDI WindowsApplication en VB tendremos
En el Solution Explorer para el Proyecto WindowsFormsApplication en C# tendremos:
Ahora se da doble click en modo diseño sobre la opción de menú empleado y copiamos este código en VB:
Private Sub EmpleadoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EmpleadoToolStripMenuItem.Click
        Dim EmpleadoForm As New Form2
        EmpleadoForm.MdiParent = Me
        EmpleadoForm.Show()
    End Sub

y dando doble click a la opción Consultar del menú se coloca el siguiente código en VB
Private Sub ConsultarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConsultarToolStripMenuItem.Click
        Dim ConsultarForm As New Form3
        ConsultarForm.MdiParent = Me
        ConsultarForm.Show()
    End Sub





Ahora el código equivalente doble click en modo diseño sobre la opción de menú empleado en C#

private void empleadoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 EmpleadoForm = new Form2();
            EmpleadoForm.MdiParent = this;
            EmpleadoForm.Show();
        }





y dando doble click a la opción Consultar del menú se coloca el siguiente código en C#


private void consultarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form3 ConsultarForm = new Form3();
            ConsultarForm.MdiParent = this;
            ConsultarForm.Show();
        }




Ahora en el evento Load del form podemos definir como se desea el tamaño para presentar el MDI Container, para VB queda asi:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.WindowState = FormWindowState.Maximized
        'Me.WindowState = FormWindowState.Minimized
        'Me.WindowState = FormWindowState.Normal
    End Sub





El evento load para el MDI Container en C# quedaría así:


private void Form1_Load(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
            //this.WindowState = FormWindowState.Minimized;
            //this.WindowState = FormWindowState.Normal;
        }



y por ultimo, para que el formulario hijo aparezca centrado podemos agregar este código en el evento Load de los hijos que aparecerán dentro del formulario MDI en VB:

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Top = Form1.Top + Form1.Height / 2 - Me.Height / 2
        Me.Left = Form1.Left + Form1.Width / 2 - Me.Width / 2
    End Sub






y el código equivalente en C# seria el siguiente.



private void Form2_Load(object sender, EventArgs e)
        {
            Form1 mdi = new Form1();
            Form2 frm = new Form2();
            frm.TopLevel = false;
            frm.Parent = mdi;
       frm.Location = new Point((mdi.Width - frm.Width) / 2, (mdi.Height - frm.Height) / 2);
            frm.Show();
        }
o igual en las propiedades del formulario hijo se puede especificar la posición en la que aparecerá, así:
y ya.

No hay comentarios