关闭Form2并显示Form1

时间:2013-10-23 12:25:33

标签: c# winforms

我有2个表格。 Form1和Form2。在form1中是一个按钮,当我单击它时,然后打开form2并隐藏form1。

但是现在,我不知道怎么办,如果我关闭Form2并显示form1。

问题2: 如果我在表单方法Update()中有Form1中的元素(标签,按钮)。我可以在form2中使用此方法吗?

由于

3 个答案:

答案 0 :(得分:4)

您必须使用FormClosing事件。在您创建form2的代码中,将form1附加到结束事件。这就是为什么form1知道form2正在关闭的原因。

private void OpenForm()
{
     var form2 = new Form2();
     form2.FormClosing += FormIsClosing;
     form2.Show();

     this.Hide();
}

private void FormIsClosing(object sender, FormClosingEventArgs e)
{
     if (e.Cancel)
     {
         return;
     }

     this.Show();
     this.Update();
}

答案 1 :(得分:0)

在Form1中为Form2的Form.FormClosing添加事件处理程序。当它触发时,再次显示Form1。

答案 2 :(得分:0)

您提出的两个问题都可以通过事件轻松解决。这是代码:

Form1中:

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

    private void button1_Click(object sender, EventArgs e)
    {
        //Declare your new form
        Form2 form2 = new Form2();

        //Register the update event
        form2.updateEvent += new EventHandler(handleUpdateEvent);

        //Register form closed event
        form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);

        Visible = false;

        //Show your new form
        form2.Show();
    }

    void form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        this.Visible = true;
    }

    //Handler for the event from form 2
    void handleUpdateEvent(object sender, EventArgs e)
    {
        this.BackColor = Color.Red;
    }
}

窗体2:

public partial class Form2 : Form
{
    //Declare your event
    public event EventHandler updateEvent;

    public Form2()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //If the event is registered fire it, otherwise do nothing
        if (updateEvent != null)
        {
            //fire the event and give our custom event args some text
            updateEvent(sender, e);
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        //Another way to close the form, beside clicking the red "X"
        Close();
    }
}

单击Form1上的按钮会导致form1创建form2,注册其事件,隐藏自己,并显示form2。单击“更新按钮”(form2的button1)时,它将在Form1上进行一些更新。对于这个演示,我只是改变了Form1的背景色。当form2关闭时,它的关闭事件将重新激活到form1,它将通过使自己再次可见来处理事件。