Поймать событие закрытия в форме c # - PullRequest
2 голосов
/ 11 февраля 2009

Эй! Я не пытаюсь испытать свою удачу здесь, но у меня есть еще один вопрос c #. Я пробовал каждое возможное событие, которое я нашел с помощью Google. Вот код:

 private void Form1_OnClose()
        {
            MessageBox.Show("I was closed -2");
        }

        private void Form1_Exit(object sender, EventArgs evArgs)
        {
            MessageBox.Show("I was closed -1");         
        }
        private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            MessageBox.Show("I was closed 0");
        }     

        private void Form1_Closed(object sender, EventArgs e)
        {
            MessageBox.Show("I was closed 1");
        }
        private void Form1_FormClosed(Object sender, FormClosedEventArgs e)
        {

            MessageBox.Show("I was closed 2");
        }

Ничто из этого не вызывает ничего, когда я нажимаю Alt + f4 или нажимаю кнопку X. Что я тут не так делаю?

Ответы [ 3 ]

12 голосов
/ 11 февраля 2009

Возможно, вам не хватает фактического кода подписки, что-то вроде этого:

this.Closing += Form1_Closing;

Вместо этого попробуйте переопределить OnXXX методы - это предпочтительный способ работы.

2 голосов
/ 11 февраля 2009

Возможно, ошибка в том, что вы не связываете события в нужное время. Проверьте ваш файл program.cs. Это должно выглядеть примерно так:

using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace Test
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Form form = new Form2();
            form.Closing += form_Closing;
            Application.Run(form);
        }
        private static void form_Closing(object sender, CancelEventArgs e)
        {
            MessageBox.Show("Closing");
        }
    }
}

Я только что запустил это, и событие сработало.

1 голос
/ 11 февраля 2009

Действительно ли эти методы назначены обработчиками событий? Перейдите в режим конструирования, выберите форму, затем щелкните маленький значок молнии над окном свойств. Затем найдите нужное событие (вероятно, «Закрытие») и дважды щелкните его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...