完全closures辅助窗口

看来,第二个窗口不closures。 这是我在做什么….

新窗口是一个没有任何东西的空白窗口。

– 在新窗口的“closures”事件中,我把代码再次显示主窗口。

  private void Window_Closed(object sender, EventArgs e) { var mainWindow = new MainWindow(); mainWindow.Show(); } 
  • 如果我运行程序并closures主窗口而不打开第二个窗口 ,那么程序就像我希望的那样结束。

  • 如果我点击主窗口上的button,带我到第二个窗口,然后closures窗口,带我回到主窗口,然后closures主窗口,程序没有结束。 (这意味着我必须击中视觉工作室的停止button才能结束)

这就像访问第二个窗口留下某种进程运行。

所以,当我closures主窗口时,我可以运行:

  Application.Current.Close(); 

但是安全吗? 我是否有机会留下悬挂的东西? 还是有更好的方法来closures第二个窗口,所以当我closures主程序将结束?

这些线

  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 MainWindow _originalReference; public NewProjectInfo(MainWindow original) { _originalReference = original; } 

现在窗口关闭事件可以使用被引用的窗口

 private void Window_Closed(object sender, EventArgs e) { _originalReference.Show(); } 

而不是创建一个新的主窗口,你可以简单地调用Application.Current.MainWindow.Show(); 在你的关闭事件处理程序?