打开最后一个活动表单C#

时间:2015-09-02 10:09:53

标签: c# forms hide switching

您好我是C#的新手,我正在为新手启动器创建故障排除培训指南,因此将创建多种表单。我目前正在使用一个简单的开放新表单并隐藏当前正常运行的代码。在每个表单上,我有一个下一个和上一个链接标签。我遇到的问题是我有两种形式导致相同的形式,我使用的代码只会转到一种。

这就是我正在使用的:

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

  this.Hide();
}

所以我的问题是如何从当前表单切换回最后一个活动表单,而不是像上面代码中那样设置表单?

2 个答案:

答案 0 :(得分:0)

您要打开的表单

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

答案 1 :(得分:0)

请注意

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

我会为它创建一个接口但是为了简化它 - 创建一个可以使用额外的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();

}

现在,在调用方法中,您可以找到最新的linq和showit活动:

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