簡體   English   中英

C# Windows 窗體 FormClosing 事件

[英]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 關閉表單時,此代碼完美運行:

  1. CANCEL 將返回表單而不進行任何更改
  2. NO 會立即關閉表單
  3. YES 將打開保存對話框

以上是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM