我想点击按钮重新启动我的主表单。例如:
在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
的新实例。我怎么能以第一个实例从内存中清除的方式做到这一点?
EDIT
即我希望MainForm
的第一个实例完全消失 - 就像调用this.Hide()
一样吗?或者调用this.Close()
然后进行设置,以便应用程序仅在最后一个窗口关闭时退出,而不是在主窗口关闭时退出?
答案 0 :(得分:2)
没有。在单个线程上启动第二个消息循环不是有效的操作。您可以改为使用Form.ShowDialog
:
Hide();
MainForm newForm = new MainForm(newData);
newForm.Closed += (s, args) => Close();
newForm.ShowDialog();
或者,如果您要关闭旧实例:
Hide();
MainForm newForm = new MainForm(newData);
newForm.ShowDialog();
Close();
答案 1 :(得分:0)
“这可能吗?”
NO。
通常,您应该运行样本并进行测试。然后你会自己回答这个问题
你会想要做的事情:
private void button_click(object sender, RoutedEventArgs e)
{
NextWindow window = new NextWindow();
window.Show();
this.Close();
}