Schliessen einer Anwendung über das rote Kreuz verhindern

MD1978

Erfahrenes Mitglied
Hallo,
wie verhindere ich, dass meine Anwendung über das rote Kreuz in der Fensterleiste beendet wird? Ich kann zwar Code in die Ereignismethode Closing schreiben, der auch ausgeführt wird. Anschließend wird jedoch die Anwendung geschlossen. Wie verhindere ich das?

Gruss,

MD
 
hi!

Code:
protected override void OnClosing(CancelEventArgs e)
{
	e.Cancel = true;
}

Damit kannst du das Schließen deines Fensters abbrechen, aber wie du speziell den Klick auf das X abfängst, weiß ich leider nicht.

mfg broetchen
 
Ich habe jetzt noch ein ähnliches Problem:
Wenn ein Fenster über das rote X geschlossen wird, soll ein Boolean auf false gesetzt werden.
Ich kann das aber nicht mit dem OnClosing realisieren, weil sonst der Boolean auch dann auf false gesetzt wird, wenn eine andere Methode ordnungsgemäß das Fenster schliesst.

Hat jemand eine Idee?

MD
 
Wie Prüfst Du denn, ob die im OnClosing das e.cancel setzt ?

Übrigends kann man über die Windows API auch das Kreuz deaktivieren.
 
Ich verstehe Deine Frage nicht.

Also: Ich will, dass beim Drücken des roten X eine bestimmte Methode gestartet wird und nur dann. Diesen Methodenaufruf kann ich nicht in die Methode "OnClosing" einfügen , weil sie ja sonst bei jedem Schließen des Fensters aufgerufen wird, nämlich auch dann wenn zum Beispiel jemand auf den OK Button klickt und das Fenster geschlossen werden soll.

Die Frage ist nun, wie ich unterscheiden kann, ob jemand auf das rote X gedrückt oder ob aus einer anderen Methode ein close() für das Fenster aufgerufen wurde.

Wie löse ich das?


Gruss,

MD
 
Zuletzt bearbeitet:
Hallo MD,

ich nehme an, Du hast nur eine Methode, die wirklich das Fenster schließen darf.
Selbstm, wenn es 2 oder 3 sind, macht das nix.
Prüfe doch, aus welcher Methode der close() kommt und nur dann setzt Du ein Flag(bool) und das Fenster kann geschlossen werden. Wenn nicht aus der entsprechenden Methode der Aufruf kam, setzt Du e.Cancel = true.

Asterix ;)
 
Zurück