打开最后一个活动形式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();
}
所以我的问题是我怎么能从当前的形式切换回最后一个活动的形式,而不是在上面的代码集形式?
说明
此代码未经过测试-可能包含一些拼写错误
我会为它创建一个接口,但为了使它更简单-创建一个类,可以扩展表单与额外的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();
}