Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2013, 17:04
Avatar de jlbautista
jlbautista
 
Fecha de Ingreso: enero-2007
Ubicación: Durango, Méx.
Mensajes: 175
Antigüedad: 18 años, 1 mes
Puntos: 1
Información ¿Cómo mostrar formularios de forma dinámica?

Buenas tardes.

Estoy desarrollando una aplicación para Windows, la cual carga un ToolStripMenu, de forma dinámica, por cada rol asignado al usuario. Los items de este menú se crean de acuerdo a información que obtengo desde la Base de Datos.

Ahora, lo interesante es conocer como puedo asignarle a cada ToolStripMenuItem que en su click mande mostrar el formulario correspondiente.

Desde la Base de Datos obtengo el nombre del form que se debe abrir para cada artículo del menú y lo almaceno en un objeto String.

¿Cómo puedo crear la instancia de mi form y mostrarlo en pantalla?

Este es mi método para crear el menú:
Código:
        private void CreaMenu()
        {
            DataTable dtDatosMenu = rnPrincipal.ObtenMenu(cveUsuario);
            if (dtDatosMenu.Rows.Count == 0)
            {
                MessageBox.Show("No se encontraron datos acerca de los permisos para el usuario.", "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            ToolStripMenuItem tsmFuncion;
            ResourceManager rm = Properties.Resources.ResourceManager;

            foreach (DataRow drMenu in dtDatosMenu.Rows)
            {
                tsmFuncion = new ToolStripMenuItem();

                Image objImagen = rm.GetObject(drMenu["imagen"].ToString()) as Image;
                tsmFuncion.Image = objImagen;
                tsmFuncion.ImageScaling = ToolStripItemImageScaling.None;
                tsmFuncion.ImageAlign = ContentAlignment.MiddleLeft;
                tsmFuncion.Alignment = ToolStripItemAlignment.Left;
                tsmFuncion.Text = drMenu["descFuncion"].ToString();
                tsmFuncion.Name = drMenu["modulo"].ToString();
                tsmFuncion.Click += tsmFuncion_Click;

                menuPrincipal.Items.Add(tsmFuncion);
            }
        }
Y este es el manejador del Evento Click de los ToolStripMenu:
Código:
        private void tsmFuncion_Click(object sender, EventArgs e)
        {
            ToolStripItem tsmItem = sender as ToolStripItem;
            string form = tsmItem.Name;
            //De aquí ya no se como crear la instancia de cada Form que deseo mostrar
        }
Les agradezco de antemano, cualquier ayuda es buena :)

Saludos.
__________________
Saludos desde Durango, MX
JL :)