打开最后一个活动形式c#

本文关键字:活动 最后一个 | 更新日期: 2023-09-27 18:11:00

嗨,我是c#的新手,正在为新手创建一个故障排除培训指南,所以将创建许多表单。我目前正在使用一个简单的打开新形式,并隐藏当前的代码,这是工作良好,直到现在。在每个表单上,我都有一个下一个和上一个链接标签。我现在遇到的问题是,我有两个表单导致相同的表单,我使用的代码只会去一个。

这是我使用的:

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

所以我的问题是我怎么能从当前的形式切换回最后一个活动的形式,而不是在上面的代码集形式?

打开最后一个活动形式c#

说明

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

我会为它创建一个接口,但为了使它更简单-创建一个类,可以扩展表单与额外的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和显示:

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

您想要打开的表单

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