关闭应用时提示用户保存

Jon*_*n B 5 .net shutdown application-shutdown winforms

我正在撰写归结为文档编辑器的内容.当应用程序关闭时,我需要提示用户保存更改.这很容易.我的问题是什么时候不提示用户,而只是丢弃未保存的数据并关闭.

在FormClosing事件中,CloseReason枚举包括:

  • 没有
  • WindowsShutDown
  • MdiFormClosing
  • UserClosing
  • TaskManagerClosing
  • FormOwnerClosing
  • ApplicationExitCall

我认为WindowsShutDown和TaskManagerClosing不应该导致"保存更改?" 提示出现,以防止应用程序挂起该提示显示.

这是标准做法,还是我应该在这里做些什么呢?

为清楚起见,这是代码:

protected override void OnFormClosing(FormClosingEventArgs e)
{
    base.OnFormClosing(e);

    if (!(e.CloseReason == CloseReason.WindowsShutDown || e.CloseReason == CloseReason.TaskManagerClosing)
            && this.ChangesPending())
    {
        switch (MessageBox.Show(this, "Save changes?", "Save Changes", MessageBoxButtons.YesNoCancel))
        {
            case DialogResult.Yes:
                this.Save();
                break;
            case DialogResult.No:
                // Do nothing
                break;
            case DialogResult.Cancel:
                e.Cancel = true;
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

rec*_*ive 3

我认为TaskManagerClosing应该是不提示的唯一原因(如果有的话)。就我个人而言,我希望在出现以下情况时得到提示WindowsShutDown。如果我关闭 Windows 时某个地方有一个未保存的文档,则意味着我已经忘记了它。