Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: SrTrp en 7 Abril 2019, 06:22 am



Título: Monstrar Formulario Padre (sin crear otro de el) C#
Publicado por: SrTrp en 7 Abril 2019, 06:22 am
Bueno como podria lograr esto ya que tengo el formulario padre y con el abro otros formularios hijos y para esto hago lo siguiente para obtener algo de estetica y no se vea tan mal
Código
  1. Form2 fm = new Form2();
  2. fm.Show();
  3. this.Hide();
  4.  
Se esconde el formulario padre y se muestra el formulario hijo pero si quiero volver al formulario padre tengo que crear otro objeto en este caso (form1) que es el formulario es decir el formulario que oculte no lo puedo monstrar de nuevo?
Y haciendo lo que hago cierro el formulario padre que cree pero no se cierra por completo mi app.


Título: Re: Monstrar Formulario Padre (sin crear otro de el) C#
Publicado por: ThunderCls en 7 Abril 2019, 08:27 am
Se esconde el formulario padre y se muestra el formulario hijo pero si quiero volver al formulario padre tengo que crear otro objeto en este caso (form1) que es el formulario es decir el formulario que oculte no lo puedo monstrar de nuevo?

Necesitas pasar la instancia del formulario principal a los formularios hijos para que de esta forma puedas manipular y llamar a sus funciones.

1- Una posible solucion seria tener una variable en cada clase hija:

Código
  1.    public partial class Form2 : Form
  2.    {
  3.        Form1 form1;
  4.        public Form2(Form1 pForm1)
  5.        {
  6.            InitializeComponent();
  7.            this.form1 = pForm1;
  8.        }
  9.  
  10.        private void button1_Click(object sender, EventArgs e)
  11.        {
  12.            form1.Show();
  13.            this.Close();
  14.        }
  15.        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
  16.        {
  17.            form1.Show();
  18.        }
  19.    }

2- Otra forma es usar el metodo Show(Owner)

Código
  1.        // Form1
  2.        private void button1_Click(object sender, EventArgs e)
  3.        {
  4.            Form2 form2 = new Form2();
  5.            form2.Show(this);
  6.            this.Hide();
  7.        }
  8.  
  9.        // Form2
  10.        private void button1_Click(object sender, EventArgs e)
  11.        {
  12.            this.Owner.Show();
  13.            this.Close();            
  14.        }
  15.        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
  16.        {
  17.            this.Owner.Show();
  18.        }