Forum: PC-Programmierung Winforms Formular schließen, wenn dies ein anderes aufruft


von def (Gast)


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?

von def (Gast)


Lesenswert?

def schrieb:
> mit Formular y Formular y

mit Formular y Formular x

von Dirk K. (merciless)


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

von def (Gast)


Lesenswert?

Dirk K. schrieb:
> Ich würde die übergeordnete Instanz des ersten Dialogs
> den neuen Dialog öffnen lassen.

was meinst du mit übergeordnete Instanz?

von def (Gast)


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?

von Dirk K. (merciless)


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

von Dirk K. (merciless)


Lesenswert?

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

von Def (Gast)


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)

von Dirk K. (merciless)


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

von Def (Gast)


Lesenswert?

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

von Def (Gast)


Lesenswert?

hat niemand eine Idee =(

von Def (Gast)


Angehängte Dateien:

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

von Lothar J. (black-bird)


Lesenswert?

WinForms hat eine Online- und Offline-Hilfe.

Frage die doch mal, bevor Du Dich hier mit ständig wechselnder Nicknamen 
meldest.

Blackbird

von Dirk K. (merciless)


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

von Def (Gast)


Lesenswert?

Lothar J. schrieb:
> WinForms hat eine Online- und Offline-Hilfe.

hört sich so an, als wüsstest du die Lösung?

von Def (Gast)


Lesenswert?

ich dachte Ursprünglich, die Ursache liegt darin, dass ich in dem Form 
Parametrisieren mehrere Messgeräte konfiguriere und dies ein paar 
Sekunden dauert

von Def (Gast)


Lesenswert?

wie gesagt, Show kommt für micht nicht in frage

von Def (Gast)


Lesenswert?

wieso ist die eine form noch offen?

von Def (Gast)


Lesenswert?

wisst ihr denn was ich meine? oder warum keine Antwort?

von c-hater (Gast)


Lesenswert?


Beitrag #6387824 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.