从Form1打开Form2,从Form2关闭Form1

时间:2010-06-02 14:59:06

标签: c# winforms

现在,我有两个表单,名为form1和form2,在form1中有一个按钮,当我单击它时,然后打开form2

问题:在form2中,我想在单击它时创建一个按钮,form2关闭,form1关闭。怎么办?这个

8 个答案:

答案 0 :(得分:7)

表格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();
    }
}

答案 1 :(得分:1)

这有效:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Me.Hide()
    Form2.Show()

答案 2 :(得分:0)

您的问题很模糊,但您可以使用ShowDialog来显示表单2.然后当您关闭表单2时,将DialogResult对象传回给用户,让用户知道表单是如何关闭的 - 如果用户单击该按钮,然后关闭表单1。

答案 3 :(得分:0)

在form2.buttonclick上放置

this.close();

form1应该具有form2的对象。

您需要订阅form2的结束事件。

并在结束方法中

this.close();

答案 4 :(得分:0)

如果您只想在不关闭form2的情况下从form2关闭form1,正如标题所示,那么您可以在创建表单1时将表单1的引用传递给表单2并使用它来关闭表单1

例如,您可以添加

public class Form2 : Form
{
    Form2(Form1 parentForm):base()
    {
        this.parentForm = parentForm;
    }

    Form1 parentForm;
    .....
}

Form2的字段和构造函数

如果您想首先关闭form2然后将form1作为问题的文本建议,我会选择Justins回答在关闭form2时将相应的结果返回到form1

答案 5 :(得分:0)

我为我的项目做过一次,关闭一个应用程序并打开另一个应用程序。

    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);

    }

答案 6 :(得分:0)

//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();          
}

答案 7 :(得分:0)

private void button1_Click(object sender, EventArgs e)
{
      Form2 m = new Form2();
      m.Show();
      this.Visible = false;
}