如何在启动新窗口时关闭当前窗口(在代码中)

SignInWindow signIn= new SignInWindow(); signIn.ShowDialog(); 

上面的代码在我的MainWindow类中。

显示新窗口时,我希望关闭当前窗口。 什么是最好的方法呢?

我的应用程序是一个C#WPF应用程序


我试过这个但是当它被调用时,我的应用程序退出了

  static private void CloseAllWindows() { for (int intCounter = App.Current.Windows.Count - 1; intCounter >= 0; intCounter--) App.Current.Windows[intCounter].Close(); } 

这样做:

 this.Close(); SignInWindow signIn = new SignInWindow(); signIn.ShowDialog(); 

请记住,实际上将关闭 MainWindow 。 如果您真正想做的就是隐藏它,那么这样做:

 this.Hide(); SignInWindow signIn = new SignInWindow(); signIn.ShowDialog(); this.Show(); 

这将在登录表单启动时隐藏 MainWindow ,但在完成后再显示它。


好的,显然你是从一个不在表单之外static class中启动这个表单。 这本来是非常相关的信息。 但解决方案是:

 var w = Application.Current.Windows[0]; w.Hide(); SignInWindow signIn = new SignInWindow(); signIn.ShowDialog(); w.Show(); 

你可以试试这个:

 SignInWindow signIn= new SignInWindow(); Application.Current.Windows[0].Close(); signIn.ShowDialog(); 

这是一种重定向代码。 它将关闭当前窗口/页面并重定向到wpf中的新页面/窗口

 SignWindow sw = new SignWindow(); this.Content = sw; 

Mike Perrenoud的答案是100%完美,尽管您可能想要在关闭主窗口之前创建新窗口的对象并将其激活。