c# - 从某些事件中取消表单关闭

标签 c# .net savefiledialog formclosing

如果 SaveFileDialog 在我的 SaveAs Click 事件中,我希望我的 formClosing 事件取消它的关闭操作, 是取消

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; 
   }
}

关于c# - 从某些事件中取消表单关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33390614/

相关文章:

.net - 带有大字体的 Windows 对话框

android - 使用 Intent.ActionOpenDocumentTree 时,您可以允许用户保存在设备以外的位置吗?

c# - Entity Framework 导致超时错误

c# - 通过 OleDb c# 在 Excel 中插入回车符

C#方 block 程序

c# - 一个关于比较List<T>的问题

特定文件夹中的 C# SaveFileDialog

c# - 领域驱动设计 : How to Retrieve Lists of Complex Data

c# - 将 CheckBox 从 DataTemplate 绑定(bind)到 ListBox 中的 TemplatedParent

.net - 单击托盘图标的正确行为?