在关闭表单之前提示用户提交更改

时间:2013-05-28 15:34:50

标签: c# .net winforms windows-forms-designer

我正在开发一个跨越几个组的大型.NET 4.0 C#项目。我的任务是修改表单以提示用户提交更改。我需要修改的表单有一个“提交更改”,“确定”,“取消”按钮。目前,没有由“确定”和“取消”按钮触发的事件。

如果用户进行了任何更改而未提交,则按“确定”按钮应生成一个MessageBox,以指导用户提交他/她的更改。这就是我的问题发生的地方。

我做了“确定”按钮触发了一个事件buttonOk_Click,用于检查更改。这里的问题是,由于已经按下“确定”按钮,我不知道如何停止表单关闭以允许用户保存他/她的更改。我无法修改调用表单的代码,因为它是另一个组的一部分。

如何停止表单关闭以允许用户保存更改?

3 个答案:

答案 0 :(得分:4)

将Form DialogResult属性设置为DialogResult.None

 form1.DialogResult = DialogResult.None;

DialogResult enumeration与表格和按钮上的同名属性相结合,用于控制模态表单的关闭方式以及返回给调用者的值。
例如,按下一个DialogResult属性设置为OK的按钮将强制模式窗体退出ShowDialog()方法,返回值设置为DialogResult.OK。

using(Form1 f = new Form1())
{
    if(f.ShowDialog() == DialogResult.OK)
    {
        // Perform post confirmation task on the form data
    }
}

答案 1 :(得分:1)

// You may use FormClosing Event of Form

  private void yourForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Want to exit from Application ?",  MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                Environment.Exit(0);
            }
            else
            {
                // your Code for Changes or anything you want to allow user changes etc.
                e.Cancel = true;

            }

        }

答案 2 :(得分:0)

感谢Bhavin Chhatrola;如果你允许,可以稍作改动:)

 private void yourForm_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (MessageBox.Show("Want to exit from Application ?",  MessageBoxButtons.YesNo) == DialogResult.Yes)
     {
         //Environment.Exit(0);
         e.Cancel = false;
     }
     else
     {
         // your Code for Changes or anything you want to allow user changes etc.
         e.Cancel = true;    
     }    
}