1

似乎第二个窗口没有关闭。这就是我正在做的事情......

  • 我创建了一个新的 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();

但这安全吗?我是否有机会将某些东西挂起来?或者有没有更好的方法来关闭第二个窗口,这样当我关闭主程序时程序就会结束?

4

2 回答 2

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();   
}   
于 2012-06-17T23:03:34.793 回答
0

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

于 2012-06-17T23:08:55.070 回答