关闭窗体 2 并显示窗体 1

本文关键字:窗体 显示 | 更新日期: 2023-09-27 18:36:37

我有 2 种形式。形式 1 和形式 2。在form1中是一个按钮,当我单击它时,然后打开form2并隐藏form1。

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

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

谢谢

关闭窗体 2 并显示窗体 1

你必须

使用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:

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 的按钮 1)时,它将对 Form1 进行一些更新。 对于此演示,我只需更改 Form1 的背景颜色。 当 form2 关闭时,其关闭事件将触发回 form1,form1 将通过使自身再次可见来处理事件。

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