在我展示我的WinForm之后,它立即关闭。我有三个WinForms:我的第一个,一个进度条,然后是我的主要一个。在启动WinForm上,用户单击一个按钮,将其引导至进度条。然后,一旦完成进度,它将通过另一个类中的函数运行主窗体,但随后立即关闭。它看起来像这样:
//Starting WinForm
private void button1_Click(object sender, EventArgs e)
{
ProgressBarForm PBF = new ProgressBarForm();
PBF.Show();
this.Close();
}
//Progress Bar Form stuff
private void ProgressBarForm_Shown(object sender, EventArgs e)
{
// Stuff for progress bar to load
progressBar1.Maximum = 100;
if (progressBar1.Value == 100)
{
Main.ExecuteMain();
}
}
// In main class
public static void ExecuteMain()
{
MainForm MF = new MainForm();
MF.Show()
// Other stuff that leads to another function
}
就在那里它会立即关闭。我已经尝试为它运行一个单独的线程,但它仍然无效。我已经尝试将其保留在while循环中,但它会不断加载并且不允许任何交互。此外,如果这很重要,我也试图在表格上画画。我的问题是,为什么WinForm立即关闭而另外两个不关闭?
答案 0 :(得分:3)
将PBF.Show();
更改为PBF.ShowDialog();
你马上关上窗户 - 这就是它关闭的原因。
答案 1 :(得分:0)
你需要申报 在主类
Public MainForm MF
在其他班级
private void ProgressBarForm_Shown(object sender, EventArgs e)
{
// Stuff for progress bar to load
progressBar1.Maximum = 100;
if (progressBar1.Value == 100)
{
Main.MF=new Main.MainForm();
Main.MF.Show(); // open form or
// Main.MF.ShowDialog(); open modal form
}
}
答案 2 :(得分:0)
原因是Application.Run()
方法中的Main
调用是通过表单传递的,并在该表单关闭时退出消息循环。您可能希望将真实的主表单传递给Application.Run()
(将其隐藏,在进度条完成之前不显示)