如何打开最近关闭或隐藏表格

时间:2013-01-11 08:41:05

标签: c# winforms forms forward

我已经彻底研究过但仍无法找到最佳解决方案.. 我有一个3个按钮,BACK - HOME - FORWARD ..

这就像浏览器左上角的按钮..我试图在表单上执行此操作..

我拥有的是这个..

后退按钮代码是

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)
{
    ???????
}

2 个答案:

答案 0 :(得分:2)

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

有几个选项可以做到这一点,但是如果你只是想让用户“前进”一次,你可以像这样存储对表单的引用:

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()它时才有效,它保持表单实例有效,只是从用户的视图中隐藏表单。

答案 1 :(得分:0)

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

List<Form> lstForms = new List<Form>();

然后当你添加一个表格时:

Form newForm = new Form();

lstForms.Add(newForm);

隐藏表格:

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

显示表格

lstForms(x).Show(); //x = index of Form you want to hide

删除表单(例如,关闭表单时)

lstForms.RemoveAt(x);

通过这种方式,您可以动态使用表单,如果您有多种表单,则更容易保持概述......