1

我已经彻底研究过,但我仍然找不到最好的解决方案。我有一个 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)
{
    ???????
}
4

2 回答 2

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

于 2013-01-11T09:13:12.610 回答
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);

这样您就可以动态地处理表单,如果您有许多表单,则更容易保持概览......

于 2013-01-11T09:27:44.907 回答