Для школьного проекта меня попросили создать веб-браузер. В контекстном меню у меня есть кнопка «Выход», которая выполняет множество операций, таких как загрузка данных в базу данных SQL и т. Д. Если есть ошибка в блоке «try», блок catch предлагает пользователю вопрос, хочет ли он закрыть или нет.
В событии «закрытие формы» я подключил свои уже существующие функции «выхода» с помощью кнопки «выход», так что если пользователь нажимает красный «X» (на экране окна), чтобы закрыть форму, он будет иметь то же самое. эффект.
Проблема в том, что поскольку это событие «закрытия формы», оно закрывает форму, даже если пользователь выбрал «нет» в диалоговом окне вопроса с помощью кнопки «Выход».
Итак, мой вопрос: как мне отменить запрос на закрытие формы с помощью кнопки «Выход»?
P.S. Не обращайте внимания на странные вещи вроде команды delete sql, у нашего учителя есть странные запросы. Предположим, что это действительно запрошенная функция.
private void יציאהToolStripMenuItem_Click(object sender, EventArgs e)
{
Favorite fav;
SqlCommand delfav = new SqlCommand("DELETE FROM tblFavorites", conn);
SqlCommand addfav = new SqlCommand("INSERT INTO tblFavorites VALUES (@title, @url)", conn);
addfav.Parameters.Add("@title", SqlDbType.NVarChar, 100);
addfav.Parameters.Add("@url", SqlDbType.NVarChar, 300);
try
{
conn.Open();
delfav.ExecuteNonQuery();
for (int i=0; i<favorites.Items.Count; i++)
{
fav = (Favorite)favorites.Items[i];
addfav.Parameters["@title"].Value = fav.getsettitle;
addfav.Parameters["@url"].Value = fav.getseturl;
addfav.ExecuteNonQuery();
}
Application.Exit();
}
catch
{
DialogResult dialogResult = MessageBox.Show("There was a problem loading your favorites to the database. Do you still wish to quit? \n (All changes to the favorites list will be lost)", "", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Application.Exit();
}
else
{
//Cancel the formclosing event here!
}
}
finally
{
conn.Close();
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
יציאהToolStripMenuItem_Click(null, null);
}