Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在关闭表单之前提示用户提交更改_C#_.net_Winforms_Windows Forms Designer - Fatal编程技术网

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

C# 在关闭表单之前提示用户提交更改,c#,.net,winforms,windows-forms-designer,C#,.net,Winforms,Windows Forms Designer,我正在从事一个大型的.NET4.0C项目,该项目跨越了几个小组。我的任务是修改表单以提示用户提交更改。我需要修改的表单有“提交更改”、“确定”和“取消”按钮。目前,没有由“确定”和“取消”按钮触发的事件 如果用户未提交任何更改,则按“确定”按钮应生成一个消息框,以引导用户提交其更改。这就是我的问题所在 我让Ok按钮触发一个事件按钮Ok_Click来检查更改。这里的问题是,由于已经按下了Ok按钮,我不确定如何停止表单关闭以允许用户保存他/她的更改。我无法修改调用表单的代码,因为它是另一个组的一部分

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

如果用户未提交任何更改,则按“确定”按钮应生成一个消息框,以引导用户提交其更改。这就是我的问题所在

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

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

将表单属性设置为DialogResult.None

 form1.DialogResult = DialogResult.None;
与表单和按钮上相同名称的属性相结合,用于控制模式表单的关闭方式以及向调用者返回的值。 例如,按下DialogResult属性设置为OK的按钮将强制模式窗体退出ShowDialog方法,返回值设置为DialogResult.OK

using(Form1 f = new Form1())
{
    if(f.ShowDialog() == DialogResult.OK)
    {
        // Perform post confirmation task on the form data
    }
}
将表单属性设置为DialogResult.None

 form1.DialogResult = DialogResult.None;
与表单和按钮上相同名称的属性相结合,用于控制模式表单的关闭方式以及向调用者返回的值。 例如,按下DialogResult属性设置为OK的按钮将强制模式窗体退出ShowDialog方法,返回值设置为DialogResult.OK

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

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

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

也许解释一下你的答案的结果是什么,尽管它看起来很明显。@Subby,是的,我写的正是关于这个也许解释一下你的答案的结果是什么,尽管它看起来很明显。@Subby,是的,我写的正是关于这个,只是为了做一个书呆子,事件是由“确定”和“取消”按钮触发的,您只是碰巧没有听到它们:我建议正确的修复方法是完全删除“确定”按钮。它的作用是什么?作为一个学究,事件是由Ok和Cancel按钮触发的,你只是碰巧没有听到它们:我建议正确的修复方法是完全移除Ok按钮。它有什么用途?