我很擅长使用验证.我有一个C#winform项目,我希望在关闭前验证表单.但是,我只想在单击按钮时进行此验证.所以我有一个像这样的事件:
if (!this.ValidateChildren())
{
MessageBox.Show("Validation failed");
}
else
{
MessageBox.Show("Validation passed with flying colours. :)");
this.Close();
}
如果验证成功,我只想关闭表单.很容易.但是,我不希望在文本框失去焦点时运行验证,只有在验证整个表单时才会运行.
我想要验证的每个控件,我已经注册了“验证”事件.他们使用“e.Cancel = true;”取消验证.我一直在使用ErrorProvider类来直观地支持它.
所以基本的问题是,只有当我想要而不是从控件中丢失焦点时才能验证特定控件集的最佳方法是什么?
编辑:目前作为一种解决方法,我有一个方法可以打开和关闭“CausesValidation”属性.我默认所有内容都不是CauseValidation,在我使用事件验证整个表单之前启用它们,然后再次禁用它们.
我真的不认为这是一种理想的方法.还有更优雅的解决方案吗?
最佳答案 我认为这是使用
Error Provider Component进行验证的最佳方式
(或)试试这个