我希望有一个表单在某个进程运行时显示,然后在完成后关闭。在我的解决方案中,当我运行this.Close()
方法并且表单不显示时,我会收到异常。我真的不想为此运行第二个线程。
以下是我打开表单的方式:
app appFourm = new app();
appFourm.ShowDialog();
以下是表单中的代码:
namespace App
{
public partial class app: Form
{
public app()
{
InitializeComponent();
// do some stuff
this.Close();
}...(more sudo code)
答案 0 :(得分:2)
在Program.cs中创建表单实例,调用Show()。 加载主表单后,关闭()它。
你不能从它自己的构造函数中处理某些东西,这就是你得到错误的原因。
答案 1 :(得分:1)
您可以使用表单的Activated
事件。我使用了一个form2
表单,上面有一个标签label1
来显示一些进度。它的工作原理如下:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
Activated += Form2_Activated;
label1.Text = "Initialised";
}
private void Form2_Activated(object sender, EventArgs e)
{
// Call methods to do work from here, for example:
label1.Text = "Working ...";
Refresh();
System.Threading.Thread.Sleep(500);
label1.Text = "Still Working ...";
Refresh();
System.Threading.Thread.Sleep(500);
label1.Text = "Done!";
Refresh();
System.Threading.Thread.Sleep(500);
this.Close();
}
}
现在你可以调用它,它可以完成工作并可以显示进度,然后在完成后关闭。
Form2 f = new Form2();
f.ShowDialog();