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.


Anmelden zum Antworten