У меня есть приложение C#, которое имеет несколько форм. В каждой форме у меня есть кнопка «Отмена» и верхняя правая (x) кнопка. Для каждой формы, я создал cancelButton_Click(), который идет как это:Application.exit() вызывает FormClosingEvent из разных форм Windows
private void cancelButton_Click(object sender, EventArgs e)
{
Application.Exit();
}
Это один вызывает функцию FormClosing, которая идет как это:
private void FormLoginPage_Closing(object sender, FormClosingEventArgs e)
{
string exitMessageText = "Are you sure you want to exit the application?";
string exitCaption = "Cancel";
MessageBoxButtons button = MessageBoxButtons.YesNo;
DialogResult res = MessageBox.Show(exitMessageText, exitCaption, button, MessageBoxIcon.Exclamation);
if (res == DialogResult.Yes)
{
e.Cancel = false;
}
else if (res == DialogResult.No)
{
e.Cancel = true;
}
}
Точно так же я создал индивидуальное FormClosing функции для всех формы, так как я хочу обрабатывать события закрытия по-разному для всех форм.
Однако, когда я нажимаю кнопку «Отмена» для выражения Form2, элемент управления переходит к функции события Form1 Closing. Есть ли лучший способ реализовать это? Пожалуйста, предложите.
Спасибо за ссылки. Я попытался использовать e.CloseReason для проверки ApplicationExit, но я не могу использовать это в каждой функции события FormClosing, так как он также будет обходить функцию FormClosing существующей формы. Пожалуйста помоги! – jetty
для текущего вызова формы Закрыть, в обработчике событий 'FormLoginPage_Closing' call' Application.Exit() ' –
Я сделал именно это, используя Application.Exit() в say Form2_Closing вызывает Form1_Closing, у которого снова есть messageBox для выхода из приложения. Я получаю несколько MessageBoxes, и я перехожу назад и вперед между двумя формами Закрытие событий из-за Application.Exit() – jetty