7
votes

Fermez une fenêtre d'une autre dans WPF

Si deux fenêtres sont ouvertes principalement A et B, comment fermer la fenêtre A à l'aide du code écrit sur la fenêtre B.


0 commentaires

4 Réponses :


5
votes

Votre meilleur pari serait de créer une propriété sur la fenêtre B que vous transmettez la fenêtre Création de la fenêtre. Quelque chose comme ça. J'ai une fenêtre nommée Mainwindow et une deuxième fenêtre nommée Window2.

fenêtre principale forte> p> xxx pré>

forte> p> xxx pré>


Dans votre commentaire, la fermeture d'une fenêtre créée par un autre formulaire est aussi simple que d'appeler la méthode de près du formulaire créé: P>

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        Window2 secondForm;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            if (secondForm == null)
            {
                secondForm = new Window2();
                secondForm.Show();
            }
            else
                secondForm.Activate();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            if (secondForm != null)
            {
                secondForm.Close();
                secondForm = new Window2();
                //How ever you are passing information to the secondWindow
                secondForm.Show();
            }

        }
    }
}


4 commentaires

:- Bon travail. En fait, je veux fermer la fenêtre de Mainwindow. Merci d'avance.


@Anoopmohan fermeture d'un formulaire par la forme qui l'a créée est beaucoup plus facile, il suffit de conserver la référence au formulaire créé et d'appeler la méthode de près.


:- Merci Monsieur. . Maintenant, je peux fermer la fenêtre. Mais je dois faire une autre chose .. Je veux fermer la fenêtre et ouvrir la même fenêtre avec une valeur différente pendant le même événement. Désolé de vous déranger. . Merci d'avance. .


@AnoopMohan J'ai changé l'événement Button2_Click pour rouvrir la fenêtre, je ne suis pas sûr de quoi / comment la valeur est que vous passez à la secondWindow afin que je ne puisse pas être plus spécifique que cela.



1
votes

Il est très simple, il est très simple de créer une classe publique et une méthode comme celle-ci xxx pré>

appelez maintenant cette fonction de l'endroit où vous voulez près de la fenêtre comme celle-ci. P>

 Helper.CloseWindow(win);//win is object of window which you want to close.


0 commentaires

4
votes

Voici un moyen de fermer n'importe quelle fenêtre d'une autre fenêtre. Vous pouvez le modifier pour fonctionner avec plusieurs instances en donnant à votre Windows un identifiant unique, puis juste chercher cela dans la boucle de Foreach. XXX PRE>

ou avec un identifiant unique "Fudge": P >

    public static void CloseWIndowUsingIdentifier(string windowTag)
    {
        Assembly currentAssembly = Assembly.GetExecutingAssembly();
        foreach (Window w in Application.Current.Windows)
        {
            if (w.GetType().Assembly == currentAssembly && w.Tag.Equals(windowTag))
            {
                w.Close();
                break;
            }
        }
    }


0 commentaires

0
votes
        for (int intCounter = App.Current.Windows.Count - 1; intCounter > -1; intCounter--)
        {

            if (App.Current.Windows[intCounter].Name != "Main_Window_wind")
                App.Current.Windows[intCounter].Visibility = System.Windows.Visibility.Hidden;
        }

1 commentaires

Veuillez ajouter quelques commentaires sur votre solution sur la raison pour laquelle et comment cela résout le problème