Funktion, die beim Schließen eines Dialogfeldes aufgerufen wird
-
Wie heißt die Funktion, die beim Schließen eines Dialogfeldes (egal ob durch OK-, Abbrechen- oder X-Button) immer aufgerufen wird? Form.Close () ist es, soweit ich sehe, nicht.
-
es ist immer Form.close, wenn Du Forms benutzt, oder meinst Du welcher Eventhandler aufgerufen wird wenn das FormClosing Event gefeuert wird?
-
Ich weiß nicht, ob ich einen Eventhandler meine. Es ist auf jeden Fall so: Wenn ich folgenden Code habe:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Close() { MessageBox.Show("Das Dialogfeld wird geschlossen."); base.Close(); } }
und nun das Dialogfeld über den X-Button oben rechts schließe, erscheint die Message-Box nicht. Ich müßte also wissen: In welche Funktion kommt die MessageBox?
Außerdem würde ich gern wissen: Was ist eigentlich das C#-Äquivalent zu OnOK und OnCancel aus der MFC?
-
Form_closing
SChau doch mal bei den Events der Form in VS.
-
Danke. Ich hab es jetzt gefunden. Ich habe im Konstruktor den Event-Handler mit meiner Methode verbunden:
this.FormClosing+=new FormClosingEventHandler(MainForm_FormClosing);
Jetzt hätte ich noch eine Frage: Wie kann man das Schließen innerhalb der Methode
private void MainForm_FormClosing(object sender, EventArgs e)
noch verhindern? Wenn also zum Beispiel jemand auf den X-Button klickt und ich eine Message-Box mit der Frage "Möchten Sie das Dialogfeld wirklich schließen?" erscheinen lasse, dann steht diese Abfrage ja in der MainForm_FormClosing. Wie breche ich nun das Schließereignis ab, wenn der Benutzer auf Nein klickt?
-
NES-Spieler schrieb:
Wie kann man das Schließen innerhalb der Methode
private void MainForm_FormClosing(object sender, EventArgs e)
noch verhindern? Wenn also zum Beispiel jemand auf den X-Button klickt und ich eine Message-Box mit der Frage "Möchten Sie das Dialogfeld wirklich schließen?" erscheinen lasse, dann steht diese Abfrage ja in der MainForm_FormClosing. Wie breche ich nun das Schließereignis ab, wenn der Benutzer auf Nein klickt?
e.Cancel = true
-
Ein e.Cancel hat die Methode leider nicht. Für den Parameter e gibt es nur Equals, GetHashCode, GetType und ToString.
-
Bei mir existiert "e.Cancel"
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if(MessageBox.Show("Wirklich schließen","Schließen?",MessageBoxButtons.OKCancel)== DialogResult.Cancel) { e.Cancel = true; } }
[Edit] Ahh, ich seh gerade deine EventArgs. Du hast den Eventhandler selber geschrieben? Ändere mal die EventArgs -> FormClosingEventArgs. Dann passt's schon.
-
Jetzt hat es funktioniert. Danke.