Inicio > Programación > Formularios MDI C#

Formularios MDI C#

//<![CDATA[

]]>


Clase para el manejo de formularios MDI en C#.NET

La base de una Aplicación con Interfaz de múltiples documentos (MDI) es el formulario MDI primario(el padre). Este formulario es el que contiene las ventanas MDI secundarias(los hijos), que son las “subventanas” dentro de las cuales los usuarios interactúan con la aplicación MDI. La creación de un formulario MDI primario resulta sencilla, tanto en el Diseñador de Windows Forms como mediante programación.
Los pasos para crear un MDI se resumen en dos:
  1. Crear formularios MDI primarios
  2. Crear formularios MDI secundarios

Creación en tiempo de diseño de formularios MDI primario

  • Cree una aplicación para Windows (C#).
  • En la ventana Propiedades, establezca la propiedad IsMDIContainer en true . Así se designa el formulario como contenedor MDI para ventanas secundarias.
  • Arrastre un componente MainMenu del Cuadro de herramientas al formulario. Cree un elemento de menú de nivel superior con la propiedad Text establecida en &Archivo, con elementos de submenú denominados  &Cerrar. Cree también un elemento de menú de nivel superior denominado &Ventana.
  • El primer menú creará y ocultará los elementos de menú en tiempo de ejecución, mientras que el segundo se encargará del seguimiento de las ventanas MDI secundarias abiertas. Llegado este punto, ha creado una ventana MDI primaria.
  • Presione F5 para ejecutar la aplicación.

Crear formularios MDI secundarios

  • En el Explorador de soluciones, haga clic con el botón secundario en el proyecto, seleccione Agregar y elija Agregar nuevo elemento. Este formulario será la plantilla de los formularios MDI secundarios.
  • En el cuadro de diálogo Agregar nuevo elemento, seleccione Windows Forms (Visual C#) en el panel Plantillas. En el cuadro Nombre, asigne al formulario el nombre Form2. Haga clic en el botón Abrir para agregar el formulario al proyecto. Se abrirá el Diseñador de Windows Forms, que mostrará el formulario Form2.
  • Arrastre un control RichTextBox al formulario desde el Cuadro de herramientas.
  • En la ventana Propiedades, establezca la propiedad Anchor en Top, Left y la propiedad Dock en Fill. Esto hace que el control RichTextBox llene por completo el área del formulario MDI secundario, aunque se cambie el tamaño del formulario.
  • Repita el paso los dos últimos pasos con la diferencia que este nuevo formulario contenga un imagen y no un RichTextBox
  • Añadimos una nueva clase a nuestro proyecto con el nombre de “Ventana.cs” y copiamos el siguiente código.
    class Ventana
    {
        //miembros protegidos
        private Form frmPrincipal = null;
        public Ventana(Form _principal)
        {
            frmPrincipal = _principal;
        }
        //
        // Activa Formulario "hijo"
        public void ActivarFormulario(Form frmHijo)
        {
            try
            {
                //Cerramos el formulario activo
                CerrarFormulario();
                //Se asigna el formulario Padre
                frmHijo.MdiParent = frmPrincipal;
                //Se establece el diseño
                frmHijo.WindowState = FormWindowState.Maximized;
                frmHijo.ControlBox = false;
                //Se muestra fromulario hijo
                frmHijo.Show();
                //Visualizando nombre del formulario hijo en el formulario padre
            }
            catch (Exception ex) { MessageBox.Show(ex.Message, frmPrincipal.Text); }
        }
        // Cerramos el Formulario Hijo actico
        private void CerrarFormulario()
        {
            try
            {
                Form activo = new Form();
                activo = frmPrincipal.ActiveMdiChild;
                activo.Close();
            }
            catch (Exception) { }
        }

    }

Finalmente en el formulario principal (Form 1) creamos una instancia de la clase Ventana.cs y los eventos para los subitems del menu ventana y Archivo.

public partial class Form1 : Form
    {
        private Ventana menu;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            menu = new Ventana(this);
        }

        private void MdiChildImagen_Click(object sender, EventArgs e)
        {
            menu.ActivarFormulario(new Form3());
        }

        private void MdiChildTexto_Click(object sender, EventArgs e)
        {
            menu.ActivarFormulario(new Form2());
        }

        private void Salir_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }

Nota: Como podrás  ver la clase que maneja la creación ,eliminación y vistas de ventanas secundarias de nuestra aplicación MDI es Ventana.cs Descargar Archivos

About these ads
Categorías:Programación
  1. susana
    2010/11/14 en 4:41 PM

    Hola, me sirvio mucho tu información y te lo agradezco mucho.

  2. nn
    2011/12/28 en 8:09 AM

    Excelente

  3. 2012/07/05 en 9:23 AM

    Simple, Sencillo y Funcional. Gracias por el aporte.

  4. 2012/11/06 en 12:45 AM

    You have the ultimate writing style. Like Ernest
    Hemingway or an author like that.

  5. 2013/06/07 en 2:06 PM

    muy buena Gracias por el aporte y 100 puntos

  1. No trackbacks yet.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.