现在,我有两个表单,称为form1和form2,在form1中有一个按钮,当我点击它时,就会打开form2
问题:在form2中,我想创建一个按钮,当我点击它时,form2关闭并关闭form1。如何做?
现在,我有两个表单,称为form1和form2,在form1中有一个按钮,当我点击它时,就会打开form2
问题:在form2中,我想创建一个按钮,当我点击它时,form2关闭并关闭form1。如何做?
表单1:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
表单2:
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();
}
}
这个有效:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Hide()
Form2.Show()
我曾经为我的项目做过这件事,关闭一个应用程序并打开另一个应用程序。
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();
并添加以下方法。您的 newThread.Start 将调用此方法。
public void frmNewFormThread)()
{
Application.Run(frmNewForm);
}
//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();
}
public class Form2 : Form
{
Form2(Form1 parentForm):base()
{
this.parentForm = parentForm;
}
Form1 parentForm;
.....
}
将字段和构造函数传递到Form2
如果您想按照问题的文本所示先关闭form2,然后再关闭form1,我建议采用Justin的答案,在关闭form2时向form1返回适当的结果。
private void button1_Click(object sender, EventArgs e)
{
Form2 m = new Form2();
m.Show();
this.Visible = false;
}
你的问题比较模糊,但是你可以使用 ShowDialog 来显示第二个窗体。然后当你关闭第二个窗体时,传递一个 DialogResult 对象回来,让用户知道窗体是如何关闭的 - 如果用户点击了按钮,那么也要关闭第一个窗体。
this.close();
form1 应该拥有 form2 的对象。
您需要订阅 form2 的 Closing 事件。
在 closing 方法中放置代码。
this.close();