我正在写归结为文档编辑器的内容。当应用程序关闭时,我需要提示用户保存更改。这很容易。我的问题是什么时候不提示用户是合适的,而是简单地丢弃未保存的数据并关闭。
在 FormClosing 事件中,CloseReason 枚举包括:
- 没有任何
- Windows关机
- MdiFormClosing
- 用户关闭
- 任务管理器关闭
- FormOwnerClosing
- 应用程序退出调用
我认为 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;
}
}
}