C# 如何打开最近关闭的窗体或隐藏窗体

C# 如何打开最近关闭的窗体或隐藏窗体,c#,winforms,forms,forward,C#,Winforms,Forms,Forward,我已经仔细研究过了,但仍然找不到最好的解决办法。。 我有一个3个按钮,返回-主页-前进 这就像浏览器左上角的按钮一样。。我试着在一张表格上做这个 我所拥有的是 返回按钮代码为 private void button1_Click(object sender, EventArgs e) { this.Hide(); } // simply hiding the form .. so that the previous form will be shown.. 主页按钮代码如下 pri

我已经仔细研究过了,但仍然找不到最好的解决办法。。 我有一个3个按钮,返回-主页-前进

这就像浏览器左上角的按钮一样。。我试着在一张表格上做这个

我所拥有的是

返回按钮代码为

private void button1_Click(object sender, EventArgs e)
{
    this.Hide();
}

// simply hiding the form .. so that the previous form will be shown.. 
主页按钮代码如下

private void button2_Click(object sender, EventArgs e)
{
    for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
    {
        if (Application.OpenForms[i].Name != "HomePage")
            Application.OpenForms[i].Close();
    }
} 

// this will show the HomePage form and close other forms whos name is not "HomePage"
问题是当我按下后退按钮时,我把它藏起来了。。按钮如何重新打开以前关闭或隐藏的表单

我希望你能帮助我!谢谢

private void button3_Click(object sender, EventArgs e)
{
    ???????
}

您需要存储对希望再次打开的表单的引用

有几个选项可以实现这一点,但是如果您只是想让用户“前进”一次,您可以存储对表单的引用,如下所示:

internal class MyHistory {
    internal static Form LastForm;
}

// ........

private void button1_Click(object sender, EventArgs e)
{
    MyHistory.LastForm = this;
    this.Hide();
}

// ........

private void button3_Click(object sender, EventArgs e)
{
    MyHistory.LastForm.Show();
}
当然,如果您想更全面,您可以维护一个完整的历史项目堆栈并前后遍历它们


请注意,如果您
.Close()
您的表单,您将无法重新打开它,因为引用将在关闭后被处理。此方法仅在
.Hide()
时有效。它使表单实例保持有效,只是在用户视图中隐藏表单。

您可以使用包含所有初始化表单的表单列表。这样您就可以动态地隐藏、显示、添加和删除表单

List<Form> lstForms = new List<Form>();
隐藏表单:

lstForms(x).Hide(); //x = index of Form you want to hide
出示表格

lstForms(x).Show(); //x = index of Form you want to hide
删除表单(例如关闭表单时)


这样你可以动态地使用表单,如果你有很多表单,更容易保持一个概览……/P>你应该考虑用一个有意义的名字命名你的按钮;对不起。。下一次发布时我会这样做:)好的,这就是代码发生的情况我从form1打开form2,我从form2打开form3我按下后退按钮,form3隐藏。。但当我按下forward键时,“空引用异常未处理”错误。。但如果我从form2再次打开form3,请按前进键。。它再次打开form3。。我想当我按下“后退”按钮时,下一次按下的是在我的历史记录中获得记录的人。@JurelJacinto您是否更新了“后退”按钮代码以存储对表单的引用?如果您设置了它,它将不会为空。还要确保您正在使用

隐藏
而不是
关闭
…是的,我使用了。。这是我在“后退”按钮中的代码。。private void button1_Click(object sender,EventArgs e){MyHistory.LastForm=this;this.Hide();}但这正是我所说的正在发生的..鲁迪爵士,知道为什么会发生吗?@jureljacino我能想到的唯一一件事是你在另一个点上关闭表单,或者您没有更改要隐藏的每个表单上的按钮。
lstForms(x).Show(); //x = index of Form you want to hide
lstForms.RemoveAt(x);