C# 在显示一些说明后,如何打开和关闭启动窗体?
我有一个表单(C# 在显示一些说明后,如何打开和关闭启动窗体?,c#,forms,C#,Forms,我有一个表单(f1),在打开另一个表单(f2)之前需要运行一些指令,并且当它结束时必须关闭。我在program.csApplication.Run(new f1())中设置在f1指令的末尾,我写了 f2 f = new f2(); f.ShowDialog(); this.Close(); 但它不会关闭,只是进入后台。所有操作都应该按照您的方式进行,但隐藏f1并以这种方式显示f2: this.Hide(); var frm2 = new f2(); frm2.Closed += (sender
f1
),在打开另一个表单(f2
)之前需要运行一些指令,并且当它结束时必须关闭。我在program.cs
Application.Run(new f1())中设置代码>在f1指令的末尾,我写了
f2 f = new f2();
f.ShowDialog();
this.Close();
但它不会关闭,只是进入后台。所有操作都应该按照您的方式进行,但隐藏f1并以这种方式显示f2:
this.Hide();
var frm2 = new f2();
frm2.Closed += (sender, args) => this.Close();
frm2.Show();
要给出更详细的答案:
public class Form1() : Form
{
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
var worker = new BackgroundWorker();
worker.DoWork += worker_DoWork;
worker.RunWorkerCompleted += worker_RunWorkerCompleted;
worker.RunWorkerAsync();
}
private void worker_DoWork(object sender, DoWorkEventArgs e) {
Thread.Sleep(5000);
// this is where you can load your data from file
}
private void worker_RunWorkerCompleted(
object sender, RunWorkerCompletedEventArgs e)
{
this.Hide();
var frm2 = new Form2();
frm2.Closed += (s, a) => this.Close();
frm2.Show();
}
}
因此Form1
将开始使用后台工作程序加载数据。加载数据时,BackgroundWorker
将触发RunWorkerCompleted
事件。该事件处理程序将隐藏Form1
而不是关闭它,创建Form2
,为Form2的Closed
事件添加一个处理程序,以便关闭Form2
将停止您的应用程序,然后显示Form2
,听起来好像您误用了表单。为什么不在执行应用程序之前将该代码移到一个类中并调用该类。运行(new f2())
并跳过第一个无意义的表单?您的意思是像启动屏幕一样吗?就像Outlook在加载时打开,然后让用户在加载应用程序之前单击“确定”?是@DominicZukiewicz。。我想获得类似的东西或visual studio开始form@Smith.h.Neil'因为在第一个表单中,我将数据从文件加载到dgv,并且我制作了一个带有隐藏所有加载进度的开始表单process@user3547175听起来好像你在用第一个表单作为代码的占位符,这不是正确使用表单的方式。不过我看你是要玩喷溅屏。您想要的是在加载数据时显示f1
(splashscreen),数据加载完成后,您想要关闭f1
并显示f2
?