Verhindern dass Formular geschlossen wird
-
Hi,
Wie kann ich verhindern, dass der Benutzer ein Formular mit ALT+F4 schließen kann?
Gruß GuenniAtWork
-
Das sollte gehen indem Du einen FormClosing-Handler für das Formular definierst und in selbigem den Cancel-Member der übergebenen EventArgs-Klasse auf true setzt...
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true }
-
Danke.
Das funktioniert.
Das Problem ist, das Formular lässt sich überhaupt nicht mehr schließen.
Es soll aber nach ner betimmten Zeit selbstständig schließen.GuenniAtWork
-
Dann müsstest du selber unterscheiden, ob der Schließen-Befehl vom Nutzer oder vom Timer kam:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if(/*Close vom User*/) e.Cancel = true }
(wie du den Unterschied erkennst, mußt du dir selber ausdenken)
-
Das ist an sich ganz einfach:
Du verwendest einen Timer und rufst in dem Timer die Close() Funktion auf. Dann verwendest du folgenden Code
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if(sender.Equals(myTimer)) e.Cancel = true //Das Formular wird nur geschlossen, wenn der Sender (der die Funktion aufruft) der Timer ist }
-
Das funktioniert leider nicht. (jedenfalls bei mir)
Habs jetzt so gemacht:
private: System::Void Form_Closing(System::Object * sender, System::ComponentModel::CancelEventArgs * e) { if(!this->timer->Enabled) e->Cancel = false; else e->Cancel = true; }
Auch ne super einfache Lösung
Hätt ich auch früher drauf kommen können.Danke für die Hilfe!!
GuenniAtWork
-
@till_hm:
Der Timer sendet aber nicht den Schliessen-Event! Vielmehr wird in einem Event, welches durch den Timer auslöst wurde, this->Close() aufgerufen, wodurch widerum das FormClosing-Event ausgelöst wird.Der sender wird wohl in jedem Fall die Form selbst sein.