This question already has answers here:
How do I prevent the app from terminating when I close the startup form?
                                
                                    (4个答案)
                                
                        
                                4年前关闭。
            
                    
我想在单击按钮时重新启动主表单。例如:

program.cs:

Application.Run(new MainForm(data))


MainForm.cs:

private void btn1_Click(object sender, EventArgs e)
{
    MainForm newForm = new MainForm(newData);
    this.close();
    Application.Run(newForm);
}


这样我的新主窗口就是MainForm的新实例。我该如何做才能从内存中清除第一个实例?

编辑
即我希望我的第一个MainForm实例完全消失-与调用this.Hide()一样吗?还是调用this.Close()然后进行设置,以使应用程序仅在最后一个窗口关闭时才退出,而在主窗口关闭时不退出?

最佳答案

否。在单个线程上启动第二个消息循环是无效的操作。您可以改用Form.ShowDialog

Hide();
MainForm newForm = new MainForm(newData);
newForm.Closed += (s, args) => Close();
newForm.ShowDialog();


或者,如果您想关闭旧实例:

Hide();
MainForm newForm = new MainForm(newData);
newForm.ShowDialog();
Close();

关于c# - 在运行时更改应用程序MainForm ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33649493/

10-10 18:13