gpt4 book ai didi

c# - 在关闭程序时提示用户保存之间减少代码重复的优雅方法?

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:53 24 4
gpt4 key购买 nike

如果程序员处理 FormClosing 事件而退出程序时,如果有未保存的数据,程序员可以提示一个保存对话框,询问他们是要保存、不保存还是取消操作。

在 FormClosing 事件中,如果他们点击 Cancel,取消您设置的操作 e.Cancel = true;。这可以。但是,在菜单中,如果用户点击 Exit 按钮,则应该发生同样的事情,除了不执行 e.Cancel = true; 它应该执行 return ; 因为它处理菜单项 Click 事件而不是 FormClosing 事件。

现在我几乎已经复制了代码,想知道是否有一种方法可以处理这个问题,从而以一种优雅且易于理解的方式避免重复。

private void FrmEditorFormClosing(object sender, FormClosingEventArgs e)
{
if (NeedsToSave)
{
DialogResult saveChangesDialog =
MessageBox.Show("There are unsaved changes. Save now?",
"Xml Editor", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

if (saveChangesDialog == DialogResult.Yes)
{
Save();
}
else if (saveChangesDialog == DialogResult.Cancel)
{
e.Cancel = true; // Only difference
}
}
}

private void ExitToolStripMenuItemClick(object sender, EventArgs e)
{
if (NeedsToSave)
{
DialogResult saveChangesDialog =
MessageBox.Show("There are unsaved changes. Save now?",
"Xml Editor", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

if (saveChangesDialog == DialogResult.Yes)
{
Save();
}
else if (saveChangesDialog == DialogResult.Cancel)
{
return; // Only difference
}
}

Close();
}

最佳答案

您不需要这样做。在您的菜单点击处理程序中调用 Close 应该会触发 FormClosing 事件,您可以在那里取消它。

关于c# - 在关闭程序时提示用户保存之间减少代码重复的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12734642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com