我正在处理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%正确,但是,一旦出现保存对话框,当我点击保存对话框内的取消按钮时,它仍然会关闭表单 - 它还应该返回?
答案 0 :(得分:2)
正如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