看来,第二个窗口不closures。 这是我在做什么….
我创build了一个新的WPF项目。
我在主窗口中放置了一个button。
我把下面的代码放在button中来启动第二个窗口并隐藏主窗口。
private void button1_Click(object sender, RoutedEventArgs e) { var projectWindow = new NewProjectInfo(); this.Hide(); projectWindow.Show(); }
新窗口是一个没有任何东西的空白窗口。
– 在新窗口的“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();
在你的关闭事件处理程序?