也许这与它作为主要形式有关,但我会问这个问题。 我的mainForm是第一个在程序启动时加载的。(/ p>)
然后我单击一个名为Add的按钮,它应打开一个新表单,然后关闭mainForm。
问题是,是一瞬间显示新表格,然后关闭两者。
代码:
private void addFrmBtn_Click(object sender, EventArgs e)
{
saveForm saveform = new saveForm();
saveform.Show();
this.Close();
}
答案 0 :(得分:6)
在Program.Main()
方法中,您可能会遇到以下情况:
class Program
{
void Main()
{
Application.Run(new MainForm());
}
}
这意味着您的应用程序的消息循环围绕主窗体运行。一旦关闭,应用程序的主UI线程就会随之而来。
你可以:
Program.Main()
方法,以便不会发生这种情况(有overloads to Application.Run()
。MainForm
而不是关闭它。以下是选项3的执行方式:
private void addFrmBtn_Click(object sender, EventArgs e)
{
saveForm saveform = new saveForm();
saveform.Show();
this.Hide();
}
答案 1 :(得分:1)
问题似乎是,您正在关闭打开子表单的父表单。 要保留表单,请使用this.Hide();而不是关闭。
答案 2 :(得分:1)
我想当主窗体关闭时,它会终止你的应用程序。将您的代码更改为:
private void addFrmBtn_Click(object sender, EventArgs e)
{
saveForm saveform = new saveForm();
saveform.Show();
this.Hide();
}
答案 3 :(得分:0)
,关闭模式,选择“当最后一个表格关闭时”
答案 4 :(得分:0)
我猜您正在显示主表单:
Application.Run(new MainForm());
这是visual studio生成的默认代码,它有一些可能意外的行为:
This method adds an event handler to the mainForm parameter
for the Closed event. The event handler calls ExitThread to
clean up the application.
http://msdn.microsoft.com/en-us/library/ms157902.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.run.aspx
要么不将表单传递给Application.Run(),要么使用.Hide()而不是.Close()。