tutorial - form c#
Abra Form2 desde Form1, cierre Form1 desde Form2 (8)
Esto funciona:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Hide()
Form2.Show()
Ahora, tengo dos formularios, llamados form1 y form2, en el formulario1 hay un botón, cuando hago clic en él, luego abro el formulario2
Pregunta: en el formulario2, quiero crear un botón cuando hago clic en él, form2 close y form1 close. Como hacer esto
Formulario 1:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
Form2:
public partial class Form2 : Form
{
Form opener;
public Form2(Form parentForm)
{
InitializeComponent();
opener = parentForm;
}
private void button1_Click(object sender, EventArgs e)
{
opener.Close();
this.Close();
}
}
Hice esto una vez para mi proyecto, para cerrar una aplicación y abrir otra.
System.Threading.Thread newThread;
Form1 frmNewForm = new Form1;
newThread = new System.Threading.Thread(new System.Threading.ThreadStart(frmNewFormThread));
this.Close();
newThread.SetApartmentState(System.Threading.ApartmentState.STA);
newThread.Start();
Y agrega el siguiente método. Su newThread.Start llamará a este método.
public void frmNewFormThread)()
{
Application.Run(frmNewForm);
}
Su pregunta es vaga, pero podría usar ShowDialog para mostrar el formulario 2. Luego, cuando cierre el formulario 2, pase un objeto DialogResult para que el usuario sepa cómo se cerró el formulario; si el usuario hizo clic en el botón, también cierra el formulario 1. .
en form2.buttonclick poner
this.close();
form1 debería tener el objeto de form2.
necesita suscribirse al evento de cierre de form2.
y en el método de cierre puesto
this.close();
si solo quiere cerrar form1 desde form2 sin cerrar form2 también en el proceso, como sugiere el título, puede pasar una referencia al formulario 1 junto con el formulario 2 cuando lo crea y usarlo para cerrar la forma 1
por ejemplo, podrías agregar un
public class Form2 : Form
{
Form2(Form1 parentForm):base()
{
this.parentForm = parentForm;
}
Form1 parentForm;
.....
}
campo y constructor a Form2
si primero quieres cerrar form2 y luego form1 como sugiere el texto de la pregunta, iré con la respuesta de Justins de devolver un resultado apropiado a form1 al cerrar form2
//program to form1 to form2
private void button1_Click(object sender, EventArgs e)
{
//MessageBox.Show("Welcome Admin");
Form2 frm = new Form2();
frm.Show();
this.Hide();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 m = new Form2();
m.Show();
this.Visible = false;
}