Laden...

[gelöst] FormClosing-Event wird nicht abgefangen

Erstellt von tikra vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.866 Views
tikra Themenstarter:in
185 Beiträge seit 2007
vor 16 Jahren
[gelöst] FormClosing-Event wird nicht abgefangen
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Wollen Sie die Anwendung wirklich beenden?", "Titel", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.No)
                e.Cancel = true;
        }

Die Anwendung schliesst sich einfach, was mache ich falsch?

tikra Themenstarter:in
185 Beiträge seit 2007
vor 16 Jahren
49.485 Beiträge seit 2005
vor 16 Jahren

Hallo timmi,

wird der EventHandler aufgerufen? Erscheint die MessageBox?

herbivore

tikra Themenstarter:in
185 Beiträge seit 2007
vor 16 Jahren

Nein, erscheint nicht. 🙁

110 Beiträge seit 2008
vor 16 Jahren

Eventuell liegt das daran, dass der Schließungs-Vorgang ggf trotz der Info-Box weiterläuft.

Setzt das e.Cancel an den Anfang und beende dann bei einem Druck auf ja.

Grüße, Aurion

S
8.746 Beiträge seit 2005
vor 16 Jahren

Ist der Event-Handler überhaupt eingehängt?

B
196 Beiträge seit 2007
vor 16 Jahren

Eventuell liegt das daran, dass der Schließungs-Vorgang ggf trotz der Info-Box weiterläuft.

Nein, es wird erst die gesammte Behandlung des Closing-Events durchgearbeitet bevor dann die tatsächliche Schließung erfolgt.

Was man überprüfen könnte ist ob dein Event noch richtig mit dem entsprechden Form verknüpft ist (mir wurde da auch mal was rausgekickt ohne das ichs gemerkt habe).
Andere Möglichkeit: Wie beendest du dein Programm? Ein Bekannter von mir hatte mal das gleiche Problem nur bei ihm lags daran das sein programm mit Process.Kill() abgeschossen wurde.

your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself

915 Beiträge seit 2006
vor 16 Jahren

Hrm, wenn die MessageBox nicht mal erscheint vermute ich mal das herbivore den richtigen Richer hatte und der EventHandler nicht aufgerufen wird.


       public Form1()
        {
            InitializeComponent();
            this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
        }

        void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = MessageBox.Show("Bla", "Blubb", MessageBoxButtons.YesNo) == DialogResult.No;
        }

Bei
Application.ExitThread();
System.Threading.Thread.CurrentThread.Abort();
System.Diagnostics.Process.GetCurrentProcess().Close();
usw..

Wird beendet ohne die OnClose aufzurufen.. Aber wüsste grad keine Beispiele bei denen man auf diese Art sein Programm beendet - Vielleicht bei alten Anwendungen mit Excel oder Word wenn man Marshal.ReleaseComObject vergessen hatte?

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

tikra Themenstarter:in
185 Beiträge seit 2007
vor 16 Jahren
          this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);

Denke der EventHandler fehlt in dem Abschnitt wo InitializeComponent() aufgerufen wird, werde es dann einmal ausprobieren - nur komisch, das der mir da auf einmal fehlt?! 🤔

Dankefein! 🙂