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

问题描述 投票:0回答:5
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();
    }
c# wpf xaml
5个回答
26
投票

就这样做:

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();

3
投票

你可以试试这个:

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

1
投票

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

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

0
投票

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


0
投票

请尝试以下方法。隐藏旧/当前窗口。显示新窗口并关闭隐藏的旧窗口。按照这种方法应用程序不会关闭。

SignInWindow signIn= new SignInWindow();
var oldWindow = Application.Current.Windows[0];
oldWindow.Hide(); 
signIn.ShowDialog();
this.Show();
oldWindow.Close();
© www.soinside.com 2019 - 2024. All rights reserved.