對於一個學校項目,我被要求創建一個Web瀏覽器。 在上下文菜單中,我有一個「退出」按鈕,它執行一些東西,如將數據上傳到SQL數據庫等。如果「try」塊中有錯誤,則catch塊會向用戶提供一個問題,如果他想要關閉或不關閉。從另一個事件中取消FormClosing事件?
在「formclosing」事件中,我已經將「已退出」功能與「退出」按鈕連接起來,因此如果用戶按下窗口屏幕上的紅色「X」來關閉窗體,會有同樣的效果。
問題是因爲它是一個「formclosing」事件,即使用戶在「退出」按鈕的問題對話框中選擇了「否」,它也會關閉表單。
所以我的問題是如何從我的「退出」按鈕中取消「formclosing」請求?
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);
}
將清理代碼移到另一個方法中。 –
這就是我討厭winforms的原因! @HansPassant – dotctor