Compartir a través de


Cómo crear formularios MDI secundarios

Los formularios secundarios MDI son un elemento esencial de las aplicaciones deMultiple-Document Interface (MDI), ya que estos formularios son el centro de interacción del usuario.

En el procedimiento siguiente, usará Visual Studio para crear un formulario secundario MDI que muestre un RichTextBox control, similar a la mayoría de las aplicaciones de procesamiento de texto. Al sustituir el System.Windows.Forms control con otros controles, como el DataGridView control o una combinación de controles, puede crear ventanas secundarias MDI (y, por extensión, aplicaciones MDI) con diversas posibilidades.

Creación de formularios secundarios MDI

  1. Cree un nuevo proyecto de aplicación de Windows Forms en Visual Studio. En la ventana Propiedades del formulario, establezca su propiedad IsMdiContainer en true y su propiedad WindowsState en Maximized.

    Esto designa el formulario como un contenedor MDI para ventanas secundarias.

  2. Desde el Toolbox, arrastre un control MenuStrip al formulario. Establezca su Text propiedad en File.

  3. Haga clic en los puntos suspensivos (...) situados junto a la propiedad Items y haga clic en Agregar para agregar dos elementos de menú de franja de herramientas secundarias. Establezca la Text propiedad de estos elementos en Nuevo y Ventana.

  4. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Agregar>nuevo elemento.

  5. En el cuadro de diálogo Agregar nuevo elemento , seleccione Windows Form (en Visual Basic o en Visual C#) o Aplicación de Windows Forms (.NET) ( en Visual C++) en el panel Plantillas . En el cuadro Nombre , asigne al formulario el nombre Form2. Seleccione Abrir para agregar el formulario al proyecto.

    Nota:

    El formulario secundario MDI que creó en este paso es un formulario estándar de Windows Forms. Por lo tanto, tiene una Opacity propiedad , que le permite controlar la transparencia del formulario. Sin embargo, la Opacity propiedad se diseñó para ventanas de nivel superior. No lo use con formularios secundarios MDI, ya que pueden producirse problemas de pintura.

    Este formulario será la plantilla de los formularios secundarios de MDI.

    Se abre el Diseñador de Windows Forms , que muestra Form2.

  6. En el Cuadro de herramientas, arrastre un control RichTextBox al formulario.

  7. En la ventana Propiedades , establezca la Anchor propiedad en Top, Left y la Dock propiedad en Fill.

    Esto hace que el RichTextBox control rellene completamente el área del formulario secundario MDI, incluso cuando se cambia el tamaño del formulario.

  8. Haga doble clic en el elemento de menú Nuevo para crear un Click controlador de eventos para él.

  9. Inserte código similar al siguiente para crear un nuevo formulario secundario MDI cuando el usuario haga clic en el elemento de menú Nuevo .

    Nota:

    En el ejemplo siguiente, el controlador de eventos controla el Click evento para MenuItem2. Tenga en cuenta que, dependiendo de los detalles de la arquitectura de la aplicación, es posible que el elemento de menú Nuevo no sea MenuItem2.

    Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
       Dim NewMDIChild As New Form2()
       'Set the Parent Form of the Child window.
       NewMDIChild.MdiParent = Me
       'Display the new form.
       NewMDIChild.Show()
    End Sub
    
    protected void MDIChildNew_Click(object sender, System.EventArgs e){
       Form2 newMDIChild = new Form2();
       // Set the Parent Form of the Child window.
       newMDIChild.MdiParent = this;
       // Display the new form.
       newMDIChild.Show();
    }
    
    private:
       void menuItem2_Click(System::Object ^ sender,
          System::EventArgs ^ e)
       {
          Form2^ newMDIChild = gcnew Form2();
          // Set the Parent Form of the Child window.
          newMDIChild->MdiParent = this;
          // Display the new form.
          newMDIChild->Show();
       }
    

    En C++, agregue la siguiente #include directiva en la parte superior de Form1.h:

    #include "Form2.h"
    
  10. En la lista desplegable de la parte superior de la ventana Propiedades , seleccione la franja de menús correspondiente a la franja de menú Archivo y establezca la MdiWindowListItem propiedad en la ventana ToolStripMenuItem.

    Esto permite que el menú Ventana mantenga una lista de ventanas secundarias MDI abiertas con una marca de verificación junto a la ventana secundaria activa.

  11. Presione F5 para ejecutar la aplicación. Al seleccionar Nuevo en el menú Archivo, puede crear nuevos formularios secundarios MDI, de los cuales se lleva un registro en el elemento de menú Ventana.

    Nota:

    Cuando un formulario secundario MDI tiene un componente MainMenu (con, normalmente, una estructura de menús de elementos de menú) y se abre dentro de un formulario principal MDI que tiene un componente MainMenu (con, normalmente, una estructura de menús de elementos de menú), los elementos del menú se fusionarán automáticamente si ha establecido la propiedad MergeType (y opcionalmente, la propiedad MergeOrder). Establezca la MergeType propiedad de los MainMenu componentes y todos los elementos de menú del formulario secundario en MergeItems. Además, establezca la MergeOrder propiedad para que los elementos de menú de ambos menús aparezcan en el orden deseado. Además, tenga en cuenta que, al cerrar un formulario primario de MDI, cada uno de los formularios secundarios MDI genera un Closing evento antes de que se genere el Closing evento para el elemento primario MDI. Cancelar el evento de Closing un elemento secundario MDI no impedirá que se genere el evento del Closing elemento primario MDI; sin embargo, el CancelEventArgs argumento para el evento del Closing elemento primario MDI ahora se establecerá en true. Puede forzar que el formulario primario MDI y todos los formularios secundarios de MDI se cierren estableciendo el argumento CancelEventArgsfalse.

Consulte también