Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Обработка события на закрытие формы


Автор: tatbesidovska 22.7.2009, 12:09
Добрый день! Такая вот проблемка. Написала обработчик события закрытия формы, но ничего не работает, что может быть за проблема, заранее спасибо
 
Код

private void Form1_FormClosing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            DataSet ds = ведомостьDataSet.GetChanges();

            if (ds != null)
                if (MessageBox.Show("Были произведены изменения в таблицах.\nВы желаете обновить данные в базе данных ?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                    == DialogResult.Yes)
                    ведомостьTableAdapter1.Update(ведомостьDataSet.Ведомость);
            ведомостьDataSet.AcceptChanges();

            if (MessageBox.Show("Вы действительно желаете выйти из программы ?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
                == DialogResult.No)
                e.Cancel = true;
        }

Автор: amarenkov 22.7.2009, 12:24
tatbesidovska, а что именно не работает? Управление в эту функцию не передается или что-то другое?

Автор: tatbesidovska 22.7.2009, 12:49
Ну по идее, при нажатиина кнопку "крест"(закрытие формы)должно появиться сообщение , то что прописано у меня, но этого не происходит, просто форма закрывается, без предупреждения

Автор: mr.Anderson 22.7.2009, 13:25
Код

        private void FMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Are you sure?", "Exit", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                e.Cancel = true;
        }

Вот такой код прописал в обработчике. Все работает.

Добавлено через 39 секунд
Попробуй поставить бряк на первой строке обработчика и посмотри, как он работает при попытке закрыть форму.

Автор: Exai1e 22.7.2009, 13:26
tatbesidovska, А если так ? 
Код

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
 {
            DataSet ds = ведомостьDataSet.GetChanges();
            if (ds != null)
                if (MessageBox.Show("Были произведены изменения в таблицах.\nВы желаете обновить данные в базе данных ?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                    == DialogResult.Yes)
                    ведомостьTableAdapter1.Update(ведомостьDataSet.Ведомость);
            ведомостьDataSet.AcceptChanges();
            if (MessageBox.Show("Вы действительно желаете выйти из программы ?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
                == DialogResult.No)
                e.Cancel = true;
}


Добавлено через 1 минуту и 22 секунды
упс, опередили  smile 

Автор: Lunatic2009 22.7.2009, 13:48
Насколько я понял, обработчик писался вручную, если так и есть, добавьте следующий код в конструктор:

Код

this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);


Автор: mr.Anderson 22.7.2009, 14:22
Lunatic2009, а вручную ли? Form1_FormClosing - стандартное название для обработчика закрытия для Form1.

Автор: Exai1e 22.7.2009, 14:24
mr.Anderson, только вот это
Код

System.ComponentModel.CancelEventArgs e

по моему не стандартно 

Автор: tatbesidovska 22.7.2009, 14:25
всем спасибо, заработало!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)