10 de marzo de 2012

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.


Related Posts:

  • Read con valores   Read con valores presentar los datos de una tabla puede ser imposible, pero si sabemos que hay pocos algunas veces es util acordarse de este parte de codigo, por ejemplo aqui solo habrian tres vigilantes, en la … Read More
  • DGV y TextBox   DGV y TextBox Este código en VB muestra los datos de una tabla en un DataGridView y al dar click sobre la celda llena los valores en los respectivos textbox, fácil. Imports System.Data Im… Read More
  • Icono de aplicación   Mostrar Icono de aplicación en el área de notificación, al lado de la hora del sistema, No en la barra de tareas!* Se logra utilizando el NotifyIcon del ToolBox: Modificamos la propiedad Nombre, ponien… Read More
  • Archivo de base de datos localHooooola a los sabios de la UCA, como me di cuenta que "no se acordaban" de estas cosas por mas sencillas que ellos mismos gritan que son, les dejo esta entrada para "ayudarles a recordar" Por lo general las bases de datos p… Read More
  • Build Solution (F6) y Start debugging (F5)   Build Solution (F6) y Start debugging (F5) Cuando seleccionamos Build solution en la opción Build del menú principal o presionamos F6, el IDE compila nuestro programa. El IDE lo hace corriendo el compilado… Read More