Formularios MDI con C# (C Sharp)

 

Un formulario MDI es un formulario (llamado "Padre" o "Parent") que puede contener otros formularios (llamados "Hijos" o "Child"). Para trabajar con este tipo de formularios se ejecuta el Visual C# (yo uso el 2005) y se crea un nuevo proyecto del tipo "Windows Application". De forma automàtica se crea un formulario con nombre "Form1". En la ventana Propiedades, se busca la propiedad "IsMDIContainer" y se cambia a "True". Luego en el menú se elige Proyectos -> Agregar Windows Form. Aparecerá la ventana de "Agregar Nuevo Elemento". Se elige "Windows Form".

El nuevo formulario se crea con el nombre Form2. A este control le agregamos 3 controles tipo textBox que se dejarán con sus nombres por defecto: textBox1, textBox2 y textBox3.

En la ventana "Inspector de Soluciones", se le hace click derecho al icono de Form1 y clickeamos en "Ver Código". El código a añadir será:

Lo que se está haciendo es crear un objeto de la clase "Form2" (C# es orientado a objetos, y todo está hecho en base a clases y namespaces). El objeto se llamará "Frm2". En las tres líneas dentro de Form1_Load, le decimos a Form2 (a través de Frm2) que esté contenido dentro de Form1.

"Frm2" nos permite tener control sobre Form2. Mas existe la condición de que todo lo que queramos hacerle a Form2 esté dentro de métodos públicos. Form1 y Form2 son dos clases separadas (ambas están dentro del namespace "WindowsApplication1"), por lo que sólo podemos acceder a Form2 desde Form1 a través de sus métodos públicos.

En el código de Form2 añadimos:

 

Luego a Form1 le añadimos un control MenuStrip, jalándolo desde la caja de herramientas:

 

Luego se le hace click a la etiqueta "limpiar" y se añade el código:

Esto permite borrar las cajas de texto en Form2 haciendo click a la opción "limpiar" en el menú de Form1.

Se pueden hacer más cosas, por ejemplo, añadí esto al menuStrip:

 

Junto con este código:

 

Esto permite minimizar y maximizar Form2 clickeando la opción correspondiente en el menú.

Por último. siempre es bueno revisar que en el código del archivo Program.cs, dentro del método Main, sea a Form1 al que se llame en la línea de Application.Run (los programas en C# siempre empiezan en el método Main).

El código de ejemplo se puede bajar de aquí.

 

Y aquí dos buenas webs para revisar:

http://www.codeproject.com/KB/cs/mdiformstutorial.aspx
http://www.elguille.info/NET/dotnet/como_manejar_formularios_aplicaciones_MDI.htm