我在winforms app,.net 3.5(VS 2010)中使用了类型化数据集。表单有DataGridView。在FormClosing事件中,我要求用户保存更改。如果用户不想保存,我想让关闭。但是,当DataGridView有验证错误时(我在datatables的ColumnChanging事件中验证数据集),表单将不会关闭。即使我没有抓住FormCLosing事件,表单也拒绝关闭。我想我必须以某种方式清除datagridvIew中的验证错误。有人可以提出解决方案吗?
编辑:还有一个细节:表单是mdi子表单。毋庸置疑,mdi父母也不会关闭。
答案 0 :(得分:0)
您可以通过将false
设置为FormClosingEventArgs.Cancel
属性Closing
处理程序参数来覆盖验证和(强制关闭)关闭表单。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult res = MessageBox.Show("Close it?", "Close", MessageBoxButtons.YesNo);
if (res == DialogResult.No)
{
e.Cancel = true;
}
else
{
e.Cancel = false;
}
}
答案 1 :(得分:0)
好的,这是我的错。 mdi parent为mdi子事件提供了一些处理程序,但是当子表单关闭时,并不是所有处理程序都被删除。