Winforms Formular schließen, wenn dies ein anderes aufruft

Gast #6370269
Lesenswert?

Servus

ich möchte ein Formular x schließen, wenn ein Formular y aufgerufen 
wird. Normalerweise mache ich das über

this.close()

Doch das Formular x wird erst geschlossen, wenn Formular y geschlossen 
wird. ich rufe Formular y mit y.showdialog () auf.

Wenn ich mit Formular y Formular y aufrufe, ergibt sind die Formulare 
öfter hintereinander aufgerufen.

Wie kann ich das unterbinden?
#6370329
Lesenswert?

ShowDialog() öffnet den neuen Dialog modal, dass heisst,
es werden nur noch Events in diesem Dialog verarbeitet
bis der Dialog wieder geschlossen wird. (Du könntest
Show() verwenden, aber das wird andere Auswirkungen haben.)

Ich würde die übergeordnete Instanz des ersten Dialogs
den neuen Dialog öffnen lassen.

merciless
Gast #6370365
Lesenswert?

def schrieb:
> Dirk K. schrieb:
>> Ich würde die übergeordnete Instanz des ersten Dialogs
>> den neuen Dialog öffnen lassen.
>
> was meinst du mit übergeordnete Instanz?

könnte man machen. z.b. über load. wird aber in meinem konkrteten Fall 
sehr hässlich, weilö ich schon vieles über load steuer. wird sehr sehr 
unübersichtlich. Gibt es andere Möglichkeiten?
#6370415
Lesenswert?

def schrieb:
> Dirk K. schrieb:
>> Ich würde die übergeordnete Instanz des ersten Dialogs
>> den neuen Dialog öffnen lassen.
>
> was meinst du mit übergeordnete Instanz?

Warum habe ich geahnt, dass diese Frage kommt? ;)
Ich entwickle üblicherweise Software mit einer
Schichtenarchitektur (siehe 
https://de.wikipedia.org/wiki/Schichtenarchitektur),
in meinem Fall:
1. Präsentationsschicht (Dialoge)
2. Anwendungslogik
3. Domänenschicht
4. Datenschicht/Infrastruktur

In meinem Programm gebe es eine Klasse in der 2. Schicht
(Anwendungslogik), welche die Dialoge steuern würde, und
diese würde den einen beenden und den anderen öffnen.

merciless
Gast #6370445
Lesenswert?

Dirk K. schrieb:
> Show(),

wie du schon sagtest, Show () hat andere Auswirkungen, die ich vermeiden 
möchte.

Dirk K. schrieb:
> 1. Präsentationsschicht (Dialoge)
> 2. Anwendungslogik
> 3. Domänenschicht
> 4. Datenschicht/Infrastruktur

hab das so umgesetzt. deshalb könnte ich über eine Variable das ganze 
Steuern. Aber das wird brutal hässlich! (unübersichtlich)
#6370540
Lesenswert?

Def schrieb:
> hab das so umgesetzt. deshalb könnte ich über eine Variable das ganze
> Steuern. Aber das wird brutal hässlich! (unübersichtlich)
Nope, das sieht nur auf den ersten (unerfahrenen) Blick
so aus. Wenn du mal an Projekten arbeitest, wo die Anzahl
der Klassen 4stellig ist, bist du froh, wenn es eine
wiedererkennbare Ordnung gibt.

merciless
Gast #6371708
Lesenswert?

egal, ob ich mit leave oder closed arbeite, das Form "Parametrisierung 
"ist im Hintergrund offen, wenn das andere aufgerufen wird. ich habe 
sogar den Umweg gemacht, das andere form nicht direkt sondern indirekt 
über eine variable aufzurufen
Angehängte Dateien:
#6371755
Lesenswert?

Def schrieb:
> Lies. Ich hab es so umgesetzt

Def schrieb:
> hat niemand eine Idee =(

Def schrieb:
> egal, ob ich mit leave oder closed arbeite, das Form "Parametrisierung
> "ist im Hintergrund offen, wenn das andere aufgerufen wird.

Ich hab dir eine Lösung aufgezeigt, von der du behauptest,
es so umgesetzt zu haben. Und jetzt geht es weiter mit
diesen Halbsätzen?

Ganz diplomatisch ausgedrückt, fühle ich mich gewaltig
verarscht.

RTFM

merciless
Beitrag #6387824 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren