从某些事件中取消表单关闭
Cancel form closing from some event
如果SaveFileDialog,我希望我的formClosing事件取消它的关闭操作,我的 SaveAs 点击事件是 Cancel
void exitToolStripMenuItem_Click (object sender, EventArgs e) {
this.Close ();
}
void form1_FormClosing (object sender, FormClosingEventArgs e)
{
if (isContentChanged)
{
DialogResult result = MessageBox.Show ("Do you want to save [ "+this.Text+"] ?", "Save", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Yes)
{
saveAsToolStripMenuItem_Click (sender, e);
}
else if (result == DialogResult.Cancel)
e.Cancel = true;
}
}
private void saveAsToolStripMenuItem_Click (object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog ();
sfd.Filter = "Drawing Files | *.drg";
DialogResult result = sfd.ShowDialog ();
if (result == DialogResult.OK) {
SaveFile (sfd.FileName);
isContentChanged = false;
}
else if (result == DialogResult.Cancel)
{
// NEED TO CANCEL FORM CLOSING HERE
}
}
可能吗?如果是,如何?
试试这个:
private void saveAsToolStripMenuItem_Click (object sender, EventArgs e)
{
...
if (result == DialogResult.OK)
{
...
}
else if (result == DialogResult.Cancel)
{
((FormClosingEventArgs) e).Cancel = true;
}
}
如果SaveFileDialog,我希望我的formClosing事件取消它的关闭操作,我的 SaveAs 点击事件是 Cancel
void exitToolStripMenuItem_Click (object sender, EventArgs e) {
this.Close ();
}
void form1_FormClosing (object sender, FormClosingEventArgs e)
{
if (isContentChanged)
{
DialogResult result = MessageBox.Show ("Do you want to save [ "+this.Text+"] ?", "Save", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Yes)
{
saveAsToolStripMenuItem_Click (sender, e);
}
else if (result == DialogResult.Cancel)
e.Cancel = true;
}
}
private void saveAsToolStripMenuItem_Click (object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog ();
sfd.Filter = "Drawing Files | *.drg";
DialogResult result = sfd.ShowDialog ();
if (result == DialogResult.OK) {
SaveFile (sfd.FileName);
isContentChanged = false;
}
else if (result == DialogResult.Cancel)
{
// NEED TO CANCEL FORM CLOSING HERE
}
}
可能吗?如果是,如何?
试试这个:
private void saveAsToolStripMenuItem_Click (object sender, EventArgs e)
{
...
if (result == DialogResult.OK)
{
...
}
else if (result == DialogResult.Cancel)
{
((FormClosingEventArgs) e).Cancel = true;
}
}