我有一些代码打算在关闭一个新的Windows窗体时打开,但是我什么也没收到,没有错误。
我尝试了几种不同的方法来在Form.FormClosed事件上打开新表单。
这是我现在拥有的代码:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Form1 myForm = new Form1();
myForm.Show();
}
但是我没有任何错误,没事。
我希望在关闭另一个窗口时会打开一个新窗口。 任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
问题在于,第一个Form1
实例关闭后,您的应用程序将关闭并退出,因为应用程序消息循环是由初始Form
实例定义的,并且它只是在等待事件直到表格关闭为止。关闭后,应用程序将退出,打开新表单不会停止该过程。
您需要调整Main()
中的Program.cs
方法,使其看起来像这样:
[STAThread]
static void Main()
{
// ... Application configuration as required here
new Form1().Show(); // The first form instance is now no longer bound to the Application message loop. Start it before we begin the run loop
Application.Run(); // Don't pass in Form1
}
您的原始代码现在应该可以使用了。但是,我可能会补充说,这不是很好的用户体验。仔细考虑您要实现的目标,并考虑替代方法-您是否只需要“重置表单”按钮?还是防止用户关闭应用程序的主要目标?如果是后者,则可以完全remove the Close icon。
答案 1 :(得分:0)
也许一些简单的方法可以使您前进。
private Form1 myForm = new Form1(); //Declare the form as a private member variable
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
e.Cancel = true; //Cancel the closing so this object stays alive
this.Visible = false; //Hide this form
myForm.Show(); //Show the next form
}
请注意@pcdevs评论。您将需要一种方法来指示表单已关闭/正在退出应用程序还是正在前进到下一步/表单。您可能想看一些有关“ C#Winform向导”的CodeProject文章,这些顺序对话框提示应用程序...