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
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;
}
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();
}