Sei sulla pagina 1di 6

FORMULARIOS MDI La Clase System.Windows.

Forms Este espacio de nombres contiene todos los tipos del entorno: clases, estructuras, enumeraciones, etc. A travs de los cuales podemos desarrollar aplicaciones compuestas por formularios Windows, junto a los correspondientes controles que permiten al usuario la interaccin con el programa. La Clase Form es la principal de este espacio de nombres y representa a una ventana Windows de una aplicacin. Mltiple Documents Interface o Interfaz de Mltiples Documentos. Los programas de ordenador grficos de Interfaz de mltiples documentos (MDI) son aquellos cuyas ventanas se encuentran dentro de una ventana padre (normalmente con la excepcin de las ventanas modales). Esto quiere decir que a partir de un formulario padre puedo crear formularios hijo los cuales van a estar visualizados dentro de este formulario. Existe una ventana MDI primaria (padre) que acta como contenedor de ventanas MDI secundarias (hijas). El formulario principal va a contener a los dems formularios. Este se llama Parent y los hijos son Child. Es til cuando una aplicacin requiere de varias ventanas de caractersticas generales o para navegar entre las distintas ventanas de una aplicacin. Los formularios pueden ser Modales y no Modales. Los de tipo modal usan ShowDialog y se llaman as porque solo estos reciben la atencin del usuario al desplegarse en pantalla. Los formularios modales se utilizan como cuadros de dilogo que se le presentan al usuario para que ste introduzca los datos que necesita la aplicacin, o para mostrarle cierta informacin, y hay que cerrarlos expresamente para que el usuario pueda continuar utilizando la aplicacin con total normalidad. Ejemplos de formularios modales sera el tpico cuadro de dilogo Acerca de, el cuadro de mensaje utilizado por la clase MessageBox, los utilizados para seleccionar archivos, colores, fuentes, y generalmente aquellos que ofrezcan informacin importante al usuario. Si se desea desplegar un formulario que el usuario pueda abandonar, se debe utilizar el mtodo Show en vez de ShowDialog. Los formularios No Modales, usan el mtodo Show y se destruyen cuando son cerrados.Pueden perder el foco de la aplicacin. No necesitan que sean

cerrados, por lo que el usuario puede alternar el foco de entrada entre el formulario principal y el formulario no modal. Ejemplos de formularios no modales seran los utilizados como formularios secundarios en aplicaciones MDI (Interfaz de Mltiples Documentos), los utilizados como cuadros de herramientas, o el clsico cuadro de dilogo Buscar existente en muchas aplicaciones. Esa diferencia entre cerrar o no expresamente un formulario o un cuadro de dilogo para que el usuario pueda continuar con su trabajo, es lo que hace que el marco de trabajo de .net utilice dos mtodos distintos para mostrar uno u otro tipo de formulario, mtodos que tambin afectan al cierre y destruccin del formulario, porque mientras que los formularios no modales mostrados mediante el mtodo Show se destruyen cuando son cerrados, no sucede lo mismo con los formularios modales llamados con el mtodo ShowDialog, los cuales se ocultarn hacindonos creer que se han cerrado y destruido. No es necesario llamar al mtodo Show para mostrar un formulario no modal, porque idntico resultado obtendra si estableciera el valor True a la propiedad Visible del formulario: Frm2.Visible = True Esto es posible por temas de herencia, ya que la clase Form hereda el mtodo Show de la clase Control, y ste mtodo es el encargado de establecer a True el valor de su propiedad Visible. Al crear el formulario padre, debe establecerse como formulario de inicio y se le deben aplicar ciertas propiedades como FormBorderStyle en forma FixedDialog para que no se pueda cambiar el tamao en tiempo de ejecucin. La propiedad WindowState en Maximized para que aparezca maximizado. La propiedad IsMdiContainer se pone a True para indicar que va a contener mltiples formularios y la apariencia del formulario cambia a un tono ms oscuro al momento de establecer esta propiedad. Mostrar formularios secundarios no modales. Se debe crear una instancia del formulario y aplicar el mtodo Show(). 'El proyecto incluye la clase Form3 Dim frm As New Form3 frm.Show() En el Visual Basic de .NET Framework 2.0, se puede acceder a instancias de los formularios a travs del objeto My.Forms. 'El proyecto incluye la clase Form3

My.Forms.Form2.Show() Mostrar formularios modales. Se crea una instancia del formulario y se usa el mtodo ShowDialog(). El propietario ser el formulario activo al hacer la llamada. ShowDialog() puede pasar como argumento una referencia a otro formulario para cambiar el formulario propietario. ShowDialog() devuelve un elemento del enumerado DialogResult. La propiedad DialogResult del formulario permite especificar qu valor del enumerado devuelve (p.e. Me.DialogResult = DialogResult.Yes). Al asignar esta propiedad, el formulario se cierra. EJEMPLO: Crear un proyecto nuevo de nombre formularios MDI. Eliminamos el form1 y damos clic en men proyecto opcin Agregar Windows Forms. Le ponemos de nombre frmPrincipal porque servir como padre o contenedor. Aplicamos propiedad IsMDIContainer a True, que indica que va a contener mltiples formularios. Propiedad FormBorderStyle a FixedDialog y WindowState a Maximized. Ampliamos el formulario. Agregamos un control MenuStrip, un ToolStrip y un StatusStrip. En el men creamos uno llamado Formularios y dentro de l colocamos las opciones &Abrir, Segundo y Tercero.

En Abrir, seleccionamos la propiedad ShorcutKeys, chequeamos en Ctrl y Clave A para que con ctrl A se active el men Abrir.

Agregamos un formulario 2, Proyecto Agregar Windows Forms. Le ponemos como nombre frmSegundo y un tercer formulario de nombre frmTercero. Damos doble clic en men Abrir y se nos abre el editor de texto digitamos lo siguiente: Private Sub AbrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AbrirToolStripMenuItem.Click With My.Forms .frmPrimero.WindowState = FormWindowState.Maximized .frmPrimero.MdiParent = Me .frmPrimero.Show() End With End Sub Damos clic en el men Segundo y digitamos lo siguiente: Private Sub SegundoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SegundoToolStripMenuItem.Click My.Forms.frmSegundo.MdiParent = Me My.Forms.frmSegundo.WindowState = FormWindowState.Maximized My.Forms.frmSegundo.Show() End Sub Con Me estamos referenciando al formulario que est invocando a los dems. No se escribe el nombre frmPrincipal, sino Me, porque no puede hacerse referencia a s mismo. Y clic en Tercero y digitamos: Private Sub TerceroToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TerceroToolStripMenuItem.Click Dim fa As New frmTercero 'fa.ShowDialog() 'se abre como modal fa.Show() 'se abre sin ser modal End Sub Las tres son formas de crear formularios MDI.

En el formulario frmSegundo colocamos un label que diga Formulario Segundo, letra Negrita cursiva tamao 14. Y en frmTercero colocamos otro label que diga Formulario Tercero. Para distinguir cul formulario vamos a abrir. Tambin en el primer formulario dir Formulario Primero, que se abrir con men Abrir. Ejecutamos la aplicacin teniendo el cuidado que el formulario principal quede establecido como formulario de inicio. Al seleccionar men Abrir o teclear Ctrl A, se abre el formulario primero. Al seleccionar segundo se abre Segundo y con tercero se abre el tercer formulario.

Al ir abriendo los formularios, se van minimizando en la barra de tareas. Si queremos que el formulario aparezca maximizado sin usar la propiedad se puede hacer en el cdigo, dando doble clic en el formulario padre y digitamos: Private Sub frmPrincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load IsMdiContainer = True Dim nMax As New Size(500, 5009) MaximumSize = nMax WindowState = FormWindowState.Maximized End Sub Si queremos que el formulario aparezca en una parte especfica de la ventana padre, digitamos as:

Private Sub TerceroToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TerceroToolStripMenuItem.Click Dim fa As New frmTercero fa.MdiParent = Me fa.StartPosition = FormStartPosition.CenterScreen 'fa.ShowDialog() 'se abre como modal para que solo se active el form principal cuando cerramos el secundario. fa.Show() 'se abre sin ser modal. Se crea una referencia para llamar y utilizar el formulario End Sub

Potrebbero piacerti anche