C# 在运行时更改应用程序MainForm

C# 在运行时更改应用程序MainForm,c#,winforms,C#,Winforms,我想单击按钮重新启动主窗体。例如: Hide(); MainForm newForm = new MainForm(newData); newForm.ShowDialog(); Close(); 在program.cs: Application.Run(new MainForm(data)) private void btn1_Click(object sender, EventArgs e) { MainForm newForm = new MainForm(newData);

我想单击按钮重新启动主窗体。例如:

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

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

Application.Run(new MainForm(data))
private void btn1_Click(object sender, EventArgs e)
{
    MainForm newForm = new MainForm(newData);
    this.close();
    Application.Run(newForm);
}
因此,我的新主窗口是
MainForm
的新实例。我怎样才能从内存中清除第一个实例

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

“可能吗”

否。
通常,您应该运行一个示例和测试。然后你自己回答这个问题
您将需要执行以下操作:

private void button_click(object sender, RoutedEventArgs e)
{
    NextWindow window = new NextWindow();
    window.Show();
    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();

在本例中,我只是在隐藏MainForm的第一个实例。我想完全销毁它并用新实例替换它。@user2635088。。。在这种情况下,您将隐藏第一个实例,并创建和显示新实例。当你想关闭新实例时,旧实例也会被关闭并销毁。但是我想立即关闭旧实例,而不是在新实例被关闭时closed@user2635088 ... 好的,那么只需添加一个
this.Close()
newForm.ShowDialog()之后@user2635088…检查我的更新答案。