2013-01-11 32 views
1

我已经彻底研究,但仍然我不能找到这个最佳的解决方案.. 我有3个按键,BACK - 首页 - 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) 
{ 
    ??????? 
} 
+0

你应该考虑用一个有意义的名字命名的按钮;) – Stormenet

+0

我很抱歉。 。生病下次我会发表:) –

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

+0

好吧,这发生了什么事情的代码 我从form1打开form2,我从form2打开form3 我按后退按钮,form3隐藏.. 但是当我按下了“空引用异常是未处理的”错误.. ,但如果我从窗口2 form3再次打开,然后按前进..它再次打开form3 .. 我认为发生的事情是,当我按下后退按钮,下一次按是在历史上获得记录的人.. –

+0

@JurelJacinto您是否更新了“返回”按钮代码以存储对表单的引用?如果你设置它,它不会为空。此外,请确保你使用'隐藏'而不是'关闭'... –

+0

是的,我做了..这是我的代码在'后退'按钮.. private void button1_Click(object sender,EventArgs e) { MyHistory .LastForm = this; this.Hide(); } 但它只是什么ive说,正在发生.. –

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); 

这样你可以用动态方式工作,这是很容易保持一个概述,如果你有很多形式...

相关问题