我对使用验证还很陌生。我有一个 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,在我使用事件验证整个表单之前启用它们,然后再次禁用它们。
我真的不认为这是一种理想的方法。还有更多“优雅”的解决方案吗?