C#winform 关掉当前界面,返回到上一界面,但不重新创建

我用的VS2022,form1用一个label进入form2,用的this hide;form form2=new form2;from2 show;。现在form2里面建立一个button想返回上一页请教一下button里面代码怎么写,或者还要改哪些,1进入2,1暂时关闭,2点击返回上一页,进入的还是原来的1,而不是新建的1。运行的时候始终就是一个页面。
要自己编写。

该回答引用ChatGPT
可以使用以下代码实现在关闭当前界面时返回到上一界面,但不重新创建:
在form2中添加以下代码:

private Form1 form1;
public Form2(Form1 form1)
{
InitializeComponent();
this.form1 = form1;
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
form1.Show();
}

在form1中打开form2时,传入form1的实例:

private void btnOpenForm2_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(this);
form2.Show();
this.Hide();
}

在form2中关闭时,调用form1的Show方法即可返回到上一界面,而不重新创建form1。

该回答引用ChatGPT:您可以使用 Form.Hide() 方法来隐藏当前的 Form2,然后调用之前已经创建的 Form1 实例的 Show() 方法来显示它。这样,您就可以返回到之前的 Form1,而不需要创建一个新的实例。

下面是一个示例代码片段,其中 Form1 实例被保存在一个名为 form1Instance 的静态变量中:

public partial class Form2 : Form
{
    // 保存 Form1 的静态变量
    private static Form1 form1Instance;

    public Form2()
    {
        InitializeComponent();
    }

    // 在打开 Form2 时,传递 Form1 的实例
    public static void ShowForm(Form1 form1)
    {
        form1Instance = form1;
        Form2 form2 = new Form2();
        form2.ShowDialog();
    }

    private void backButton_Click(object sender, EventArgs e)
    {
        // 隐藏当前 Form2
        this.Hide();

        // 显示之前已经创建的 Form1 实例
        form1Instance.Show();
    }
}

在打开 Form2 时,您可以通过调用 ShowForm() 方法,并传递当前 Form1 的实例来显示 Form2。在 Form2 中,当用户单击返回按钮时,您可以隐藏当前的 Form2,并显示之前已经创建的 Form1 实例。

请注意,您需要确保在打开 Form2 之前,只创建了一个 Form1 的实例,并且在调用 Form2.Show() 方法之前将其传递给 ShowForm() 方法。

将form变量静态化处理然后按顺序存储到数组里,然后按需要隐藏或展示

隐藏

该回答参考ChatGPT:
您可以在form2的button的Click事件中添加以下代码来返回到原来的form1:

this.Hide(); // 隐藏form2
Form1 form1 = new Form1(); // 新建一个form1
form1.Show(); // 显示form1
这样就可以在form2中点击button返回到原来的form1了。

请注意,如果您希望在返回到原来的form1时保留原来的数据,您需要在form1中进行相应的数据保存和加载操作。另外,如果您希望关闭form2而不是隐藏它,可以使用this.Close()方法。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
在C# WinForm中,要实现关闭当前界面并返回到上一个界面,可以使用以下代码:

在form1中打开form2的代码:

private void label1_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Owner = this;
    this.Hide();
    form2.ShowDialog();
}

在form2中返回上一个界面的按钮代码:

private void btnBack_Click(object sender, EventArgs e)
{
    this.Close();
    this.Owner.Show();
}

在打开form2时,将其Owner设置为form1,然后使用Hide方法隐藏当前界面。在form2中,通过关闭当前界面来返回到上一个界面,并使用Owner的Show方法显示上一个界面。

完整的代码示例如下:

Form1.cs

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

    private void label1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Owner = this;
        this.Hide();
        form2.ShowDialog();
    }
}

Form2.cs

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

    private void btnBack_Click(object sender, EventArgs e)
    {
        this.Close();
        this.Owner.Show();
    }
}

如果我的回答解决了您的问题,请采纳!