[英]C# Windows Forms FormClosing event
我正在處理FormClosing
事件
DialogResult dg = MessageBox.Show("Do you want to save changes?", "Closing", MessageBoxButtons.YesNoCancel);
if (dg == DialogResult.Yes)
{
saveToolStripMenuItem_Click(sender, e);
}
else if (dg == DialogResult.Cancel)
{
e.Cancel = true;
}
當我單擊 X 關閉表單時,此代碼完美運行:
以上是 100% 正確,但是,一旦出現保存對話框,當我單擊保存對話框內的取消按鈕時,它仍然關閉表單 - 它也應該返回嗎?
正如 Matthew Watson 已經建議的那樣,您可以創建一個幫助方法。 這是它的一個簡短版本:
private DialogResult SaveStuff()
{
return new SaveFileDialog().ShowDialog();
}
這可以在saveToolStripMenuItem_Click
事件中使用,如下所示:
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult dr = SaveStuff();
if (dr == DialogResult.OK)
{
// ...
}
}
但最重要的是,您可以在FormClosing
事件中使用它並檢查返回值:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dg = MessageBox.Show("Do you want to save changes?", "Closing", MessageBoxButtons.YesNoCancel);
if (dg == DialogResult.Yes)
{
if (SaveStuff() == DialogResult.Cancel)
{
e.Cancel = true;
}
}
else if (dg == DialogResult.Cancel)
{
e.Cancel = true;
}
}
這樣,當點擊SaveFileDialog
上的取消按鈕時,表單應該保持未關閉狀態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.