如何激活表单

时间:2018-04-14 00:51:41

标签: c# winforms

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

private void button1_Click(object sender, EventArgs e)
{
    Ges.produit.Add(p); 
    Form3 f= new Form3(); 
    f.dataGridView1.Rows.Clear(); 
    foreach (var item in Ges.produit) 
    {
        f.dataGridView1.Rows.Add(item.Id, item.Name, item.Qty, item.Prac, item.Prav, item.Disc); 
    }
    this.MdiParent = f.MdiParent; 
    f.Show(); 
    this.Hide(); 
}

问题:在form2中,我单击它时创建了一个按钮,form2关闭并返回到form1而不打开另一个form1。怎么办?这个

1 个答案:

答案 0 :(得分:0)

您可以通过以下几种方式执行此操作,一种方法是将父表单的引用传递给其构造函数中的子表单,然后在关闭此表单时调用子表单调用show。

实现此目的的另一种方法是在父表单中创建子表单,同时还连接子表单的FormClosed事件以重新显示父表单。

以下是这两种方法的示例

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void btnShowForm2_Click(object sender, EventArgs e)
    {
        var form2 = new Form2(this);

        this.Hide();
        form2.Show();
    }

    private void btnShowForm3_Click(object sender, EventArgs e)
    {
        var form3 = new Form3();

        form3.FormClosed += (o, args) =>
        {
            this.Show();
        };

        this.Hide();
        form3.Show();
    }
}

public partial class Form2 : Form
{
    private readonly Form1 _form1;

    public Form2()
    {
        InitializeComponent();
    }

    public Form2(Form1 form1)
        :this()
    {
        _form1 = form1;
    }

    private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        _form1.Show();
    }
}