Вы находитесь на странице: 1из 9

Visual Basic .

NET (Diseño de aplicación MDI)

Creando una aplicación MDI básica con Visual Basic .NET

Introducción

En este artículo, explicaremos como crear una aplicación MDI (Multiple Document Interface) con Visual

Basic .NET. Seguiremos los pasos iniciales de creación de aplicaciones MDI que nos faciliten la

comprensión del desarrollo de aplicaciones de este tipo.

Ejecución de Visual Studio .NET

Iniciaremos un nuevo proyecto con Visual Studio .NET al que daremos el nombre de MDI_Sample,

siendo éste, un proyecto de una aplicación de Windows, tal y como se muestra en la figura 1.

Forzando al proyecto como proyecto MDI

Inicialmente, nuestro proyecto es un proyecto de formulario Windows normal, pero nuestro deseo es que

nuestro formulario inicial sea un formulario MDI, por lo que deberemos asignar de alguna forma a este

formulario, las propiedades de un formulario MDI.

Para ello, haremos clic sobre el formulario (para seleccionarlo) y acudiremos a la ventana de

propiedades, y dentro de esta ventana, modificaremos la propiedad IsMdiContainer a True.

Observaremos que nuestro formulario ha cambiado de aspecto tal y como se muestra en la figura 2.
Visual Basic . NET (Diseño de aplicación MDI)

El aspecto de este formulario es ligeramente diferente al del formulario normal no MDI.

Creando los formularios hijos

Todo proyecto MDI, está formado por un formulario contenedor (el formulario MDI) y uno o varios

formularios hijos que se situarán dentro del formulario padre o contenedor.

Por si aún no sabe como es una aplicación MDI o no conoce sus diferencias respecto de una aplicación

normal, le comentaré que un ejemplo de este tipo de aplicaciones lo forman Microsoft Excel o Microsoft

Word por poner un par de ejemplos sencillos.

Para añadir un formulario a nuestra aplicación, bastará con seleccionar el proyecto en la ventana de

proyectos y pulsar el botón derecho del ratón, seleccionando del menú la opción Add > Add Windows

Form.

De esta manera, tendremos en nuestro proyecto un formulario padre Form1 y un formulario que lo

utilizaremos como formulario hijo, Form2, pero para indicar que el formulario Form2 será hijo de Form1,

deberemos hacer una pequeña modificación en el código de la aplicación.

Pero esto lo veremos más adelante, ya que antes, de aprender a llamar al formulario hijo y aprender a

situarlo dentro del formulario padre, practicaremos con el control MainMenu, el cuál insertaremos en el

Form1.

Añadiendo un menú a nuestra aplicación

Lo primero que debemos hacer es añadir un control MainMenu al formulario Form1. Una vez insertado,

deberemos añadir el siguiente menú:


Visual Basic . NET (Diseño de aplicación MDI)

&Fichero

- &Archivo

--

- &Salir

Nuestro formulario con el menú insertado es el que se muestra en la figura 3.

Lo que queremos hacer es que cuando pulsemos en el menú Salir, la aplicación termine, mientras que al

pulsar en el menú Nuevo, la aplicación abra una nueva ventana dentro del documento o ventana

principal.

Cargando múltiples documentos

Las ventanas de una aplicación MDI, son tratados como documentos, por lo que hay que hacer

referencia a ellos como tal.

Deberemos cargar los documentos dentro del formulario padre. Esta carga se hace por código como

veremos en las siguientes porciones de código.

En primer lugar seleccionaremos la opción Salir de nuestra aplicación haciendo doble clic sobre ella y

escribiremos el siguiente código asociado a dicho evento:

Form1.vb

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem4.Click

Me.Close()
Visual Basic . NET (Diseño de aplicación MDI)

End Sub

Repetiremos la misma acción con la opción Nuevo y en este caso, escribiremos el siguiente código

asociado a esta opción:

Form1.vb

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem2.Click

Dim MiForm As New Form2()

MiForm.MdiParent = Me

MiForm.Show()

End Sub

En esta pequeña porción de código, observamos que en primer lugar declaramos el formulario hijo,

Form2, y sobre él, asignamos un formulario padre que corresponde con el formulario MDI, Form1.

Posteriormente, cargamos el formulario como lo solemos hacer normalmente.

Si ejecutamos nuestra aplicación, observaremos que al pulsar sobre la opción Nuevo, se abre un

documento dentro de la aplicación MDI, tantas veces como hayamos hecho clic sobre esa opción, sin

embargo, no tenemos forma de identificar las ventanas abiertas, ya que todas se abren con el mismo

título de ventana, y esto puede llevarnos al error o a una confusión entre ventanas que nos dificulte su

identificación.

Lo primero que podríamos hacer es definir una variable al inicio de la aplicación, que nos sirva de

contador, y que quedará como se detalla a continuación:

Private intContador As Integer = 0

Esta variable la declararíamos justo debajo de la definición de la clase de la ventana y después de

heredar el nombre de espacio que corresponde al formulario.

Sin embargo, vamos a utilizar la variable definida como Static.

De esta manera, definiremos los cambios dentro de la opción del menú Nuevo, que quedarían de la

siguiente forma:

Form1.vb

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As


_
Visual Basic . NET (Diseño de aplicación MDI)

System.EventArgs) Handles MenuItem2.Click

Static intContador As Integer

Dim MiForm As New Form2()

MiForm.MdiParent = Me

MiForm.Text = MiForm.Text & " [" & intContador & "]"

MiForm.Show()

intContador = intContador + 1

End Sub

De esta manera, tendremos una aplicación algo diferente a la que teníamos inicialmente, tal y como se

muestra en la figura 4.

Nota: Otra posibilidad adicional, es la de incrementar la variable defindida como estática con la nueva

función añadida en Visual Basic .NET para añadir valores a variables y que recuerdan a otros lenguajes

como C++.

Esta definición quedaría de la siguiente manera:

intContador += 1

Esta definición de incremento, sustituye a la definición:

intContador = intContador + 1

Ordenando los documentos


Visual Basic . NET (Diseño de aplicación MDI)

Sin embargo, estas ventanas siguen apareciendo de una forma poco organizada, por lo que conviene

ordenar bien las ventanas abiertas mediante algún mecanismo.

En Windows podemos hacer uso de un conjunto de funciones que nos permiten ordenar los documentos

abiertos en una aplicación MDI.

Para hacer esto, acudiremos nuevamente al menú principal (control MainMenu) y añadiremos un nuevo

menú dentro del formulario principal MDI o Form1.

El menú nuevo quedaría de la siguiente manera:

V&entana

- &Cascada

- Mosaico &Horizontal

- Mosaico &Vertical

Sin embargo, nuestro deseo es más ambicioso, y es que dentro de esta opción, aparezcan las ventanas

asociadas a nuestro documento, de tal manera que podamos saltar de una ventana a otra sin problemas

dentro de nuestra aplicación MDI, por lo que debemos indicar de alguna manera esta función, asi que

haremos un clic sobre la opción Ventana del menú y acudiremos a la ventana de propiedades.

En la ventana de propiedades, modificaremos la propiedad MdiList a True.

El funcionamiento de esta propiedad es el que puede verse en la figura 5.

Pero aún no hemos programado la posibilidad u opción de ordenar las ventanas en cascada, en una

ordenación horizontal y/o en una ordenación vertical.


Visual Basic . NET (Diseño de aplicación MDI)

El código de cada una de estas funciones es el que se detalla a continuación:

Form1.vb

Private Sub MenuItem6_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem6.Click

Me.LayoutMdi(MdiLayout.Cascade)

End Sub

Private Sub MenuItem7_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem7.Click

Me.LayoutMdi(MdiLayout.TileHorizontal)

End Sub

Private Sub MenuItem8_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem8.Click

Me.LayoutMdi(MdiLayout.TileVertical)

End Sub

Un ejemplo de ejecución de nuestra aplicación es el que se detalla en la figura 6.


Visual Basic . NET (Diseño de aplicación MDI)

Código de la aplicación

El código completo de la aplicación es el finalmente el que se detalla a continuación:

Form1.vb

Public Class Form1

Inherits System.Windows.Forms.Form

[...]

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem4.Click

'Opción Salir

Me.Close()

End Sub

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem2.Click

'Opción Nuevo

'Definición de variable estática

Static intContador As Integer

'Declaración del formulario hijo

Dim MiForm As New Form2()

MiForm.MdiParent = Me

MiForm.Text = MiForm.Text & " [" & intContador & "]"

MiForm.Show()

'Incremento del valor para mostrarlo como parte del título de la


ventana

intContador += 1

End Sub
Visual Basic . NET (Diseño de aplicación MDI)

Private Sub MenuItem6_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem6.Click

'Opción Cascada

Me.LayoutMdi(MdiLayout.Cascade)

End Sub

Private Sub MenuItem7_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem7.Click

'Opción Mosaico Horizontal

Me.LayoutMdi(MdiLayout.TileHorizontal)

End Sub

Private Sub MenuItem8_Click(ByVal sender As System.Object, ByVal e As


_

System.EventArgs) Handles MenuItem8.Click

'Opción Mosaico Vertical

Me.LayoutMdi(MdiLayout.TileVertical)

End Sub

Conclusión

Como vemos, la aplicación MDI es muy fácil de desarrollar con Visual Basic .NET. Respecto a Visual Basic

hay algunos cambios, pero el funcionamiento es prácticamente idéntico.

Tan sólo debemos tener en cuenta algunos cambios producidos para no cometer errores, aún así, en

pocas líneas de código como vemos, podemos desarrollar nuestra aplicación MDI, muy utilizadas por

ejemplo para desarrollar un editor de textos.

Вам также может понравиться