Winforms Formular schließen, wenn dies ein anderes aufruft

Gast #6370269
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
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
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
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
#6370425
def schrieb:
> 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?

Probiere mal Show(), wenn du nur einen Dialog
gleichzeitig offen hast, sollte das gehen.

merciles
Gast #6370445
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
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 #6370581
Dirk K. schrieb:
> 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.

Lies. Ich hab es so umgesetzt
Gast #6371708
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
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
Gast #6371809
ich dachte Ursprünglich, die Ursache liegt darin, dass ich in dem Form 
Parametrisieren mehrere Messgeräte konfiguriere und dies ein paar 
Sekunden dauert
Beitrag #6387824 wurde von einem Moderator gelöscht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.