none
Llamar un formulario "hermano" RRS feed

  • Pregunta

  • Buenas

    Necesito llamar un formulario hijo desde otro que es un hijo.

    me explico, tengo un formulario para crear clientes el cual es hijo de un panel en el formulario; desde este necesito llamar a otro que es hijo del mismo panel.

    Estuve tratando llamando una función desde en un modulo aparte ya que así podría llamar a cualquiera en cualquier momento, pero no funciona.

    Se aceptan otros métodos pero si saben como hacerlo usando el mismo método que estoy usando seria mejor. 


    Panda Codes

    martes, 20 de julio de 2021 21:10

Respuestas

  • Hola Panda

    Si mostras un Form desde otro Form, el 1ro será hijo del 2do. Si entendí bien, que no estoy seguro, si lo que queres es que cuando ocurra algo en un Form hijo de otro Form, se muestre otro Form hijo del mismo Form padre, es en el Form padre crear un método público que muestre el otro Form hijo, y desde el 1er Form hijo invocar ese método del padre accediendo a su propiedad Owner que es una referencia al Form padre.

    Al mostrar el 1er Form hijo, pasarle this (autoreferencia al Form padre) a Show():

    FormHijo1 form = new FormHijo1();

    form.Show(this);

    En algún método del 1er Form hijo:

    FormPadre padre = (FormPadre)this.Owner;

    padre.MetodoQueMuestraElOtroFormHijo();

    o si no directamente

    padre.form = new FormHijo2();

    padre.form.Show(); // si necesitas acceder al padre pasarle this, igual

    Para lo cual form debería ser público.

    Espero que te sea útil.

    Saludos

    Pablo

    • Marcado como respuesta Panda Codes viernes, 30 de julio de 2021 18:28
    martes, 20 de julio de 2021 22:37

Todas las respuestas

  • Hola Panda

    Si mostras un Form desde otro Form, el 1ro será hijo del 2do. Si entendí bien, que no estoy seguro, si lo que queres es que cuando ocurra algo en un Form hijo de otro Form, se muestre otro Form hijo del mismo Form padre, es en el Form padre crear un método público que muestre el otro Form hijo, y desde el 1er Form hijo invocar ese método del padre accediendo a su propiedad Owner que es una referencia al Form padre.

    Al mostrar el 1er Form hijo, pasarle this (autoreferencia al Form padre) a Show():

    FormHijo1 form = new FormHijo1();

    form.Show(this);

    En algún método del 1er Form hijo:

    FormPadre padre = (FormPadre)this.Owner;

    padre.MetodoQueMuestraElOtroFormHijo();

    o si no directamente

    padre.form = new FormHijo2();

    padre.form.Show(); // si necesitas acceder al padre pasarle this, igual

    Para lo cual form debería ser público.

    Espero que te sea útil.

    Saludos

    Pablo

    • Marcado como respuesta Panda Codes viernes, 30 de julio de 2021 18:28
    martes, 20 de julio de 2021 22:37
  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 20 de julio de 2021 23:10
    Moderador
  • buenas

    ya lo implemente pero no me dio resultado, me da un error de System.NullRefernceException

    Este es el codigo que quiero llamar

     public void btncliseach_Click(object sender, EventArgs e)
            {
                CliSeach Fom = new CliSeach();
                Fom.TopLevel = false;
                Fom.AutoScroll = true;
                this.Contenedor.Controls.Add(Fom);
                this.Contenedor.Tag = Fom;
                Fom.Show();
                if (Fom.TopMost == false)
                {
                    Fom.BringToFront();
                }
            }


    Panda Codes

    miércoles, 21 de julio de 2021 15:38
  • Pero no lo codeaste como yo te dije. Lee, y hacelo como yo te dije, y probablemente te va a funcionar. Pero si haces cualquier cosa o lo mismo que hiciste antes que no te funcionó es seguro que no te va a funcionar. Lee con detenimiento lo que te expliqué y trata de implementarlo, y si hay algo que no entendes, decimelo y trataré de explicartelo. 
    miércoles, 21 de julio de 2021 17:20
  • Hola Panda

    Acá hay otra pregunta parecida a la tuya que seguramente te puede servir:

    Llamar a un formulario hermano

    Saludos

    Pablo


    jueves, 22 de julio de 2021 23:21
  • gracias

    sobre el código que me pusiste, funciono pero no de la forma que necesitaba que lo hiciera. Por lo menos me ayudo

    gracias otra vez


    Panda Codes

    viernes, 23 de julio de 2021 1:53
  • Si te falta algo por resolver podes explicarme bien que es y trato de ayudarte. ¿Pero viste la respuesta a la otra pregunta que te pasé el link en la respuesta anterior? Con eso creo que ya lo tendrías, pero, otra vez, si te falta algo podes decirme.
    viernes, 23 de julio de 2021 3:13
  • gracias, me ayudaste mucho con ese articulo

    Panda Codes

    viernes, 23 de julio de 2021 15:50
  • No es un artículo, es una pregunta del foro, de otra persona, parecida a tu pregunta, que la respondí confundiéndome como si fuera la tuya, que me tomé el tiempo de hacer un pequeño proyecto de ejemplo, y que espero que a la otra persona le sea un poquito más útil que lo que te fue a vos. 

    Saludos

    EDITO: más que nada lo que espero es que la otra persona lea mi respuesta y si le sirve, bien, y si no mala suerte, pero que la lea.
    viernes, 23 de julio de 2021 21:08