none
¿Es posible "inyectar" un formulario en otro formulario? RRS feed

  • Pregunta

  • Hola a todos, un saludo y espero que estén muy bien...quizás el título mi pregunta sea un poco ambigua. A lo que me refiero es si se puede pegar un formulario en otro formulario, es decir, yo tengo un formulario login donde mis usuarios inician sesión, en vez de cerrar u ocultar ese formulario y abrir otro, ¿no será posible que despliegue el nuevo contenido en ese mismo formulario?...algo así como hace Angular, que que muestra los contenidos de los componentes en una sola página.

    No sé si me expliqué...¿habrá alguna técnica o una función?...y no me refiero a usar controles tab o usar la propiedad visible.

    Gracias por su atención

    miércoles, 26 de septiembre de 2018 23:01

Todas las respuestas

  • Hola Carlos78f:

    Formularios MDI, SDI

    Existen multitud de videos y documentos de como puedes hacer eso.

    Un ejemplo

    Un ejemplo C#

    Un saludo


    • Editado Javi Fernández F jueves, 27 de septiembre de 2018 6:26 Añadir otro ejemplo
    jueves, 27 de septiembre de 2018 6:18
  • Lo primero convierte tu formulario en un UserControl, cosa que puedes hacer copiando y pegando (tanto el diseño de la interfaz como el code-behind). Una vez convertido en UserControl, si lo quieres seguir usando como formulario, no hay problema: simplemente incrustas el UserControl en un formulario vacío de forma que ocupe todo el contenido y funciona igual. Y si lo quieres incrustar en otro formulario dinámicamente, pones en ese otro formulario un contenedor donde quieras incrustar el usercontrol y lo añades así:

    miUserControl uc = new miUserControl();

    miPanel.Controls.Add(uc);

    y cuando lo quieras quitar, así:

    miPanel.Controls.RemoveAt(0);

    jueves, 27 de septiembre de 2018 6:49
  • Como te dicen puedes hacerlo con formas MDI y si quieres una forma rápida, puedes agregar una forma dentro de otra con algo así:

    private void button1_Click(object sender, EventArgs e)
    {
                Form2 form = new Form2();
                form.TopLevel = false;
                form.Top = 100;
                form.Left = 20;
                this.Controls.Add(form);
                form.Show();
    }

    Saludos,

    Anibal Marcano

    jueves, 27 de septiembre de 2018 14:35