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

sof*_*fun 11 c# wpf xaml

SignInWindow signIn= new SignInWindow();
signIn.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

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

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

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


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

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

Mik*_*oud 20

这样做:

this.Close();
SignInWindow signIn = new SignInWindow();
signIn.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

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

this.Hide();
SignInWindow signIn = new SignInWindow();
signIn.ShowDialog();
this.Show();
Run Code Online (Sandbox Code Playgroud)

这将隐藏MainWindow,而登录表单,但后来表明它再次它完成时.


好了,显然你推出从这种形式static class外面的形式.这本来是非常相关的信息.但解决方案是:

var w = Application.Current.Windows[0];
w.Hide();

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

w.Show();
Run Code Online (Sandbox Code Playgroud)

  • @softwareisfun你是什么意思"'这个'在WPF中不起作用"?`this`关键字是一种C#语言功能,完全独立于您是否使用WPF.它指的是从中调用它的类的当前实例. (2认同)