C# Alle Fenster außer aktuelles schließen

Nick_SMI

Ensign
Registriert
Sep. 2015
Beiträge
153
Hallo zusammen,

ich habe eine WPF/C# Application geschrieben.
Nun möchte ich von dem Window "C" die offenen Fenster "A" und "B" schließen.

Wie gehe ich da am besten vor?
Ich habe im Internet keine Methode gefunden um das umzusetzen?


Gruß und danke im Voraus!
 
Hi,

hast du denn A, B und C alle selbst gestartet oder sind das programmfremde Fenster?

VG,
Mad
 
Die sind alle von mir aus gestartet worden, A ist das, was beim Programmaufruf gestartet wird, B wird von A gestartet (per ShowDialog()) und B startet C...
 
Form A ist deine Main Form? Wenn ja, kannst du die nicht Schließen ohne das gesamte Programm beenden zu wollen. Was willst du denn genau machen?
 
Die Fenster bekommst du nicht zu, denn diese sind modal und die Aktionen warten entsprechend, bis der/die Dialog(e) geschlossen werden.
 
Naja, ich habe halt mehrere Fenster offen, bis der Nutzer zu dem C kommt, wo alle im Hintergrund geschlossen werden sollen, damit diese keinen Zugriff mehr auf die anderen haben sollen... Die Fenster A und B machen ja nichts mehr, sind einfach nur sichtbar...
 
Hm, naja, hatte gehofft, es ist Möglich :/ Weil ist ja eig. blöd, wenn ich halt Fenster C öffne und die noch offenen A und B geschlossen werden sollen :/
 
Es ist auch möglich, du musst nur B und C als eigenständige Fenster spawnen (Window.Show()) und nicht als Dialoge. So kannst du dann C die Referenzen auf A und B mitgeben, damit C die beiden anderen Fenster schließen kann.
 
Grantig schrieb:
Es ist auch möglich, du musst nur B und C als eigenständige Fenster spawnen (Window.Show()) und nicht als Dialoge. So kannst du dann C die Referenzen auf A und B mitgeben, damit C die beiden anderen Fenster schließen kann.

Super, jz muss ich nur wissen, was du mit Referenten meinst ::)
Evtl. Code-Beispiel? :/
 
Vielleicht klappt es ja so ...

Das Application Objekt enthält eine Eigenschaft "Windows" in der alle geöffneten Fenster drin stehen.

Wie wäre es, wenn man durch diese Auflistung geht und die Fenster schließt, wenn sie nicht das aktuelle Fenster sind?

Wird vermutlich nur dann funktionieren, wenn du die Fenster entsprechend mit Show() statt ShowDialog() öffnest.

Vielleicht so:

Code:
für jedes Fenster in Application.Current.Windows
    Wenn Fenster != aktuelles Fenster
        Fenster schliessen
 
Zuletzt bearbeitet:
Rossibaer schrieb:
Vielleicht klappt es ja so ...

Das Application Objekt enthält eine Eigenschaft "Windows" in der alle geöffneten Fenster drin stehen.

Wie wäre es, wenn man durch diese Auflistung geht und die Fenster schließt, wenn sie nicht das aktuelle Fenster sind?

Wird vermutlich nur dann funktionieren, wenn du die Fenster entsprechend mit Show() statt ShowDialog() öffnest.

Vielleicht so:

Code:
für jedes Fenster in Application.Current.Windows
    Wenn Fenster != aktuelles Fenster
        Fenster schliessen

Ja, hat so geklappt:

Code:
foreach(Window fenster in Application.Current.Windows)
{
    if (fenster.Title != "Main") /* Per .title, ist eine Möglichkeit */
    {
        fenster.Close();
    }
}

Danke für eure hilfe!
 
Zurück
Oben