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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von def (Gast)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
def schrieb:
> mit Formular y Formular y

mit Formular y Formular x

von Dirk K. (merciless)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
hat niemand eine Idee =(

von Def (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

von Def (Gast)


Bewertung
0 lesenswert
nicht lesenswert
wieso ist die eine form noch offen?

von Def (Gast)


Bewertung
0 lesenswert
nicht lesenswert
wisst ihr denn was ich meine? oder warum keine Antwort?

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert

Beitrag #6387824 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.