您好我是C#的新手,我正在为新手启动器创建故障排除培训指南,因此将创建多种表单。我目前正在使用一个简单的开放新表单并隐藏当前正常运行的代码。在每个表单上,我有一个下一个和上一个链接标签。我遇到的问题是我有两种形式导致相同的形式,我使用的代码只会转到一种。
这就是我正在使用的:
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Home myNewForm = new Home();
myNewForm.Visible = true;
this.Hide();
}
所以我的问题是如何从当前表单切换回最后一个活动表单,而不是像上面代码中那样设置表单?
答案 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();
}