C# 打开最后一个活动窗体C

C# 打开最后一个活动窗体C,c#,forms,hide,switching,C#,Forms,Hide,Switching,嗨,我是C语言的新手,我正在为新手创建一个故障排除培训指南,所以我将创建许多表单。我目前使用的是一个简单的打开新表单和隐藏当前代码,直到现在它仍然运行良好。在每个表单上,我都有一个下一个和上一个链接标签。我现在遇到的问题是,我有两个表单导致相同的表单,我使用的代码只会指向一个表单 这就是我正在使用的: private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Home myNew

嗨,我是C语言的新手,我正在为新手创建一个故障排除培训指南,所以我将创建许多表单。我目前使用的是一个简单的打开新表单和隐藏当前代码,直到现在它仍然运行良好。在每个表单上,我都有一个下一个和上一个链接标签。我现在遇到的问题是,我有两个表单导致相同的表单,我使用的代码只会指向一个表单

这就是我正在使用的:

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
  Home myNewForm = new Home();
  myNewForm.Visible = true;

  this.Hide();
}

因此,我的问题是如何从当前表单切换回上一个活动表单,而不是上面代码中的设置表单?

要打开的表单

 public partial class Form3 : Form
{
    public Form FormName { get; set; }
    public Form3()
    {
        InitializeComponent();
    }
    public Form3(Form fromName)
    {
        FormName = fromName;
        InitializeComponent();
    }
    private void BackToFrom(object sender, EventArgs e)
    {
        FormName.Show();
        this.Hide();
    }
}  
这就是你如何从Form2和Form1到Form3再回到第一位的方法 在Form1中编写此方法

  private void ShowForm3(object sender, EventArgs e)
    {
        new Form3(new Form1()).Show();
        this.Hide();
    }
在Form2中,再次写入,但更改参数

  private void ShowForm3(object sender, EventArgs e)
    {
        new Form3(new Form2()).Show();
        this.Hide();
    }

此代码未经测试-可能包含一些拼写错误

我会为它创建一个接口,但为了使它更简单-创建一个类,它可以用额外的DateTime属性扩展表单。它也可以是某种布尔值。如下图所示:

public class FormExtended{
    public Form _form{get;set;}
    public DateTime lastActive {get;set;}
    ...
}
稍后,为每个表单创建该类的实例。例如:

public FormExtended CreateNewForm()
{
    var extension = new FormExtended();
    extension._form = new YourForm();
    extension.lastActive = DateTime.Now;
    listOfForms.Add(extension); //listOfForms - some kind of global list to hold all instances
    return extension;

    //if you want to You can make it void and just show the form without return
    //extension._form.Show();

}
现在,在calling method中,您可以使用linq和showit找到最新的active:

public void showLastActiveForm()
{
    var latestForm = listOfForms.OrderByDescending(x => x.lastActive).Take(1);
    latestForm._form.Show();
}

检查我的答案,尽量让它对你简单:嗨,谢谢你的帖子,但它仍然只是打开一个和关闭前一个。假设我有3张表格。表格1、表格2和表格3。表格1和表格2都转到表格3我想做的是让表格3上的上一个按钮选择返回哪个表格。所以如果我从form1-form3走,它会回到form1,如果我从form2-form3走,它会回到form2。在为最后一节添加表单缓存和附加代码行时,必须进行一些更改。再次感谢。这是概念的证明。很高兴这有帮助。干杯