1

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

如果用户做了任何更改,但没有提交,按下“确定”按钮应该会生成一个 MessageBox 来引导用户提交他/她的更改。这就是我的问题发生的地方。

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

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

4

3 回答 3

4

将 Form DialogResult属性设置为 DialogResult.None

 form1.DialogResult = DialogResult.None;

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

using(Form1 f = new Form1())
{
    if(f.ShowDialog() == DialogResult.OK)
    {
        // Perform post confirmation task on the form data
    }
}
于 2013-05-28T15:36:21.957 回答
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;

            }

        }
于 2013-05-30T07:22:55.267 回答
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;    
     }    
}
于 2016-03-11T11:23:38.140 回答