web-dev-qa-db-fra.com

Comment fermer la fenêtre actuelle (dans le code) lors du lancement d'une nouvelle fenêtre

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

Le code ci-dessus est dans ma classe MainWindow.

Lorsque la nouvelle fenêtre est affichée, je veux que la fenêtre en cours se ferme. Quelle est la meilleure façon de faire cela?

Mon application est une application WPF C #


J'ai essayé cela mais quand ça s'appelle, mon application se ferme

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

Faites juste ceci:

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

gardez à l’esprit que cela va réellement fermer la MainWindow. Si tout ce que vous essayez de vraiment _ est de le cacher, procédez comme suit:

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

Cela va masquer la MainWindow tant que le formulaire de connexion est en place, mais ensuite afficher il sera à nouveau terminé.


Bon, apparemment, vous lancez ce formulaire à partir d'un static class qui est extérieur le formulaire. Cela aurait été une information assez pertinente. Mais une solution serait la suivante:

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

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

w.Show();
15
Mike Perrenoud

Vous pouvez essayer ceci:

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

C'est une sorte de code de redirection. il fermera la fenêtre/page actuelle et redirigera vers la nouvelle page/fenêtre dans wpf

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

La réponse de Mike Perrenoud est parfaite, bien que vous souhaitiez peut-être créer un objet de la nouvelle fenêtre et l'activer avant de fermer la fenêtre principale.

0
Ketan Dubey