c# - 使用 ErrorProvider 和验证事件的表单验证

标签 c# winforms validation error-handling errorprovider

我对使用验证还很陌生。我有一个 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,在我使用事件验证整个表单之前启用它们,然后再次禁用它们。

我真的不认为这是一种理想的方法。还有更多“优雅”的解决方案吗?

最佳答案

关于c# - 使用 ErrorProvider 和验证事件的表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10128474/

相关文章:

c# - 最快(最简单)的 GUI MFC 或 C# 或 QT 或?

c# - 从 NuGetV3 API 获取包

c# - .Net4 中的 GC : Specifying gcServer and gcConcurrent together

c# - RadioButton 和开关

php - 使用 php 针对 xsd 验证 xml 文件

c# - 使 GTK# 文件选择器仅选择文件

c# - 文本框和标签之间的一致空间和对齐方式

c# - Selenium WebDriver 使用代理用户名和密码自动登录

jquery-ui - JavaScript 错误显示 "confirm is not a function"

c++ - 在编译时验证 std::initializer_list 的内容