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.


Anmelden zum Antworten