我正在开发一个跨越几个组的大型.NET 4.0 C#项目。我的任务是修改表单以提示用户提交更改。我需要修改的表单有一个“提交更改”,“确定”,“取消”按钮。目前,没有由“确定”和“取消”按钮触发的事件。
如果用户进行了任何更改而未提交,则按“确定”按钮应生成一个MessageBox,以指导用户提交他/她的更改。这就是我的问题发生的地方。
我做了“确定”按钮触发了一个事件buttonOk_Click,用于检查更改。这里的问题是,由于已经按下“确定”按钮,我不知道如何停止表单关闭以允许用户保存他/她的更改。我无法修改调用表单的代码,因为它是另一个组的一部分。
如何停止表单关闭以允许用户保存更改?
答案 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;
}
}