Как я уже сказал в заголовке, я создаю программу. Однако я столкнулся с проблемой выполнения события FormClosing
. Появится окно сообщения, и кнопки выполняют свою задачу хорошо, но когда я нажимаю «Да» или «Нет», он повторяется. К счастью, кнопка «Отмена» не имеет этой проблемы.Создание программы в C#, событие FormClosing выполняется дважды
private void Form1_FormClosing (object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you want to save your progress?", "Media Cataloguer", MessageBoxButtons.YesNoCancel);
if (dialog == DialogResult.Yes)
{
SaveFileDialog savefile = new SaveFileDialog();
savefile.Filter = "Text files|*.txt";
savefile.Title = "Save As";
savefile.ShowDialog();
System.IO.FileStream fs = (System.IO.FileStream)savefile.OpenFile();
Application.Exit();
}
else if (dialog == DialogResult.No)
{
MessageBox.Show("Are you sure?", "Media Cataloguer", MessageBoxButtons.YesNo);
Application.Exit();
}
else if (dialog == DialogResult.Cancel)
{
e.Cancel = true;
}
}
Ничто другое, что я нашел, очень помогло мне. Как я уже сказал ранее, окно сообщения появляется дважды. Это моя единственная проблема. Все остальное для этой пустоты отлично работает.
Что произойдет, если вы удалите Application.Exit(); от вашего кода? Может быть, форма закрывается, и вы вызываете Application.Exit(); который снова запускает событие? –
Можете ли вы опубликовать код, который вызывает Form1_FormClosing – matcheek
Похоже, вы дважды зарегистрировали обработчик событий. Проверьте свой собственный и созданный конструктором код. – leppie