看来第二个窗口没有关闭。这就是我在做的事情......
我创建了一个新的WPF项目。
我在主窗口中放了一个按钮。
我在按钮中放入以下代码以启动第二个窗口并隐藏主窗口。
private void button1_Click(object sender, RoutedEventArgs e)
{
var projectWindow = new NewProjectInfo();
this.Hide();
projectWindow.Show();
}
- 新窗口是一个空白窗口,上面没有任何内容。
- 在新窗口的“关闭”事件中,我将代码再次显示在主窗口中。
private void Window_Closed(object sender, EventArgs e)
{
var mainWindow = new MainWindow();
mainWindow.Show();
}
如果我运行程序并关闭主窗口而不打开第二个窗口,程序会像我希望的那样结束。
如果我单击主窗口上的按钮,转到第二个窗口,然后关闭该窗口,将我带回主窗口,然后关闭主窗口,程序不会结束。 (意思是我必须点击visual studio中的停止按钮才能结束)
就像访问第二个窗口一样,某些进程正在运行。
所以,当我关闭主窗口时,我可以运行:
Application.Current.Close();
但这样安全吗?我有机会留下什么东西吗?或者是否有更好的方法来关闭第二个窗口,所以当我关闭主程序时,程序将结束?
答案 0 :(得分:3)
这些行
var mainWindow = new MainWindow();
mainWindow.Show();
创建一个新的MainWindow并显示它。原来的MainWindow仍然是隐藏的。
要解决您的问题,您需要对原始MainWindow实例的引用 也许您可以在构建辅助窗口时传递此引用
// Create a NewProjectInfo instance and pass this
var projectWindow = new NewProjectInfo(this);
this.Hide();
projectWindow.Show();
在projectWindow的构造函数中,保存在全局var
中传递的引用var MainWindow _originalReference;
public NewProjectInfo(MainWindow original)
{
_originalReference = original;
}
现在窗口关闭事件可以使用引用的窗口
private void Window_Closed(object sender, EventArgs e)
{
_originalReference.Show();
}
答案 1 :(得分:0)
您可以简单地在已关闭的事件处理程序中调用Application.Current.MainWindow.Show();
,而不是创建新的主窗口吗?