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:

  • Gambas2 El Visual Basic De Linux (UBUNTU) Gambas es un lenguaje de programación líbre derivado de BASIC (de ahí que Gambas quiera decir Gambas Almost Means Basic). Es distribuido con licencia GNU GPL. Cabe destacar que presenta ciertas similitudes co… Read More
  • Ruta BD access desde directorio aplicación VSC# string rutaBD = Application.StartupPath + "\\bd.mdb";             con = new conexionOleDb(rutaBD); VB Dim rutaBD As String = Application.StartupPath + "\… Read More
  • DateTimePicker VS El control DateTimePicker permite seleccionar una fecha de manera conveniente. Cuando se accede a este objeto, muestra la fecha actual y, mediante flechas de desplazamiento que pertenecen al control, muestra calendarios que … Read More
  • Pausa en aplicación VSMuchas veces necesitamos que nuestra aplicación quede en modo espera o pausada para realizar un proceso externo y no tengamos problemas de sincronización, por ejemplo, cuando copiamos ficheros necesitamos que la aplicación se… Read More
  • Ejecutar aplicaciones externas a VS En este Form se cargan programas externos a nuestra aplicación, el Form para VB.NET queda así: Public Class Form1     Private Sub BNotepad_Click(ByVal sender As System.Object, ByVal e As System… Read More