Cómo abrir un nuevo formulario desde otro formulario

Tengo forma que se abre utilizando el método ShowDialog. En esta forma tengo un botón llamado More. Si hacemos clic en Más debería abrir otro formulario y debería cerrar el formulario actual.

En el controlador de eventos Click de Más botones, he escrito el siguiente código

MoreActions objUI = new MoreActions (); objUI.ShowDialog(); this.Close(); 

Pero lo que está sucediendo es que no está cerrando la primera forma. Entonces, modifiqué este código para

 MoreActions objUI = new MoreActions (); objUI.Show(); this.Close(); 

Aquí, el segundo formulario se muestra y, en cuestión de segundos, ambos formularios se cierran.

¿Alguien por favor me puede ayudar a solucionar el problema. Lo que necesito hacer es, si hacemos clic en el botón Más, debería abrir otro formulario y cerrar el primer formulario.

Cualquier tipo de ayuda será realmente útil para mí.

En mi opinión, el formulario principal debe ser responsable de abrir ambos formularios secundarios. Aquí hay un pseudo que explica lo que haría:

 // MainForm private ChildForm childForm; private MoreForm moreForm; ButtonThatOpenTheFirstChildForm_Click() { childForm = CreateTheChildForm(); childForm.MoreClick += More_Click; childForm.Show(); } More_Click() { childForm.Close(); moreForm = new MoreForm(); moreForm.Show(); } 

Solo necesitarás crear un evento simple MoreClick en el primer hijo. El principal beneficio de este enfoque es que puede replicarlo según sea necesario y puede modelar fácilmente algún tipo de flujo de trabajo básico.

Si te entendí bien, ¿lo intentas así?

texto alternativo

¿dentro de esto?
texto alternativo

en su Form1 , agregue este evento en su botón:

  // button event in your Form1 private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.ShowDialog(); // Shows Form2 } 

Luego, en tu Form2 agrega también este evento en tu botón:

  // button event in your Form2 private void button1_Click(object sender, EventArgs e) { Form3 f3 = new Form3(); // Instantiate a Form3 object. f3.Show(); // Show Form3 and this.Close(); // closes the Form2 instance. } 

ok, así que usé esto:

 public partial class Form1 : Form { private void Button_Click(object sender, EventArgs e) { Form2 myForm = new Form2(); this.Hide(); myForm.ShowDialog(); this.Close(); } } 

Esto parece estar funcionando bien, pero la primera forma está oculta y aún puede generar eventos. se necesita “this.Close ()” para cerrar el primer formulario, pero si aún desea que su formulario se ejecute (y no actúe como un lanzador) DEBE reemplazarlo con

 this.Show(); 

¡La mejor de las suertes!

Usaría un valor que se establece cuando se presiona más un botón para cerrar el primer diálogo y luego hacer que el formulario original pruebe el valor y luego muestre el diálogo allí.

Para el ex

  1. Crea tres ventanas desde
  2. Form1 Form2 Form3
  3. Añadir un botón a Form1
  4. Añadir dos botones a form2

Código del formulario 1

  public partial class Form1 : Form { public Form1() { InitializeComponent(); } private bool DrawText = false; private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.ShowDialog(); if (f2.ShowMoreActions) { Form3 f3 = new Form3(); f3.ShowDialog(); } } 

Código de form2

  public partial class Form2 : Form { public Form2() { InitializeComponent(); } public bool ShowMoreActions = false; private void button1_Click(object sender, EventArgs e) { ShowMoreActions = true; this.Close(); } private void button2_Click(object sender, EventArgs e) { this.Close(); } } 

Deja form3 como está

Prueba esto..

 //button1 will be clicked to open a new form private void button1_Click(object sender, EventArgs e) { this.Visible = false; // this = is the current form SignUp s = new SignUp(); //SignUp is the name of my other form s.Visible = true; } 

puedes considerar este ejemplo

 //Form1 Window //EventHandler Form1 frm2 = new Form1(); { frm2.Show(this); //this will show Form2 frm1.Hide(); //this Form will hide } 

Por ejemplo, tienes un Button llamado como Button1 . Primero, haga clic en él para abrir el Button2 de Button2 de ese Button2 para llamar a otro Form debe escribir el siguiente código en su botón.

 your name example=form2. form2 obj=new form2(); obj.show(); 

Para cerrar form1, escriba el siguiente código:

form1.visible=false; o form1.Hide();

Puedes intentar agregar un bool para que el algoritmo sepa cuándo se activó el botón. Cuando se hace clic, el valor de bool es verdadero, el nuevo formulario se muestra y el último se cierra.

Es importante saber que las formas consumen algo de ram (al menos un poco), así que es una buena idea cerrar las que no vas a usar, en lugar de simplemente esconderlas. Marca la diferencia en grandes proyectos.