Schließen abfangen

W-Stefan

Mitglied
Hey Leute,

ich mach erst seit 4 Wochen C#-Programmierung und hab jetzt ne frage. Ich möchte das das beenden des Programms (durch drücken von x oder AltF4) abgefangen wird und ich vorher noch frage, ob man wirklich beenden will. Ich habs schon bei

http://www.tutorials.de/tutorials145403.html

nachgelesen, versteh aber nicht wie das funktionieren soll und wo man den Code einsetzt.

Danke für eure hilfe
W-Stefan;)
 
Jede Form besitzt das Event Closing. Dort musst Du im Endeffekt nur ein Cancel = true machen. Dann kann die Anwendung nicht mehr geschlossen werden. Sollte aber nur in Verbindung mit einer Abfrage etc. verbunden sein, da du das Teil sonst nur mehr über den Task-Manager killen kannst.

Als Beispiel:
Code:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
   // Wurde der Inhalt der TextBox verändert?
   if (textBox1.Text != strMyOriginalText)
   {
      // Soll gespeichert werden oder nicht?
      if(MessageBox.Show("Do you want to save changes to your text?", "My Application",
         MessageBoxButtons.YesNo) ==  DialogResult.Yes)
      {
         // Schließen der Form abbrechen ....
         e.Cancel = true;
         // .... und hier sollte der Code zum Speichern stehen.
      }
   }
}

Ich hoffe das hilft. Weitere Informationen findes du in der MSDN.
 
Des funktioniert aber nicht. Ich verstehs überhaupt nicht. Muss ich vielleicht noch irgendwo anders etwas hinzufügen?

mfg W-Stefan
 
Naja, den Handler musst noch hinzufügen. Wennst SharpDevelop oder VS nimmt, passiert das allerdings automatisch.

Code:
this.Closing += new System.ComponentModel.CancelEventHandler(this.Form1_Closing);

Wobei Form1_Closing die Methode ist, die bei diesem Event ausgeführt werden soll, musst also notfalls anpassen. Und positionieren tust das ganze in der InitializeComponent().
 
Zuletzt bearbeitet:
Danke, jetzt funktionierts. Ich arbeite zwar mit Microsoft Visual Studio, er hat den Befehl aber nicht hinzugefügt!

mfg W-Stefan;)
 
Du hast vermutlich auch meinen Code eingefügt und angepasst.

Damit das automatisch eingefügt wird, hast du die Möglichkeit, in der Propertyleiste auf das "Blitz-Symbol" zu klicken. Dort bekommst Du dann alle möglichen Events angezeigt. Surch dir das Event aus, das du benötigst und mach nen Doppelclick auf das Feld daneben. VS wechselt nun in die Code-View, legt die Event-Methode an, den EventHandler und du musst eigentlich nur mehr in der Event-Methode Deinen Code einfügen.
 

Neue Beiträge

Zurück