在Winforms中使用数据注释验证器,可以通过以下步骤实现:
System.ComponentModel.DataAnnotations
和System.ComponentModel.DataAnnotations.Schema
的引用。System.ComponentModel.DataAnnotations
中的注解来定义验证规则。例如:public class User
{
[Required]
public string Name { get; set; }
[Range(18, 100)]
public int Age { get; set; }
[EmailAddress]
public string Email { get; set; }
}
ErrorProvider
组件来显示验证错误。将该组件添加到窗体中,并设置其DataSource
属性为需要验证的数据源。Validating
事件中,编写验证逻辑。例如:private void nameTextBox_Validating(object sender, CancelEventArgs e)
{
var user = (User)bindingSource.Current;
var validationContext = new ValidationContext(user);
validationContext.MemberName = nameof(User.Name);
var validationResults = new List<ValidationResult>();
if (!Validator.TryValidateProperty(user.Name, validationContext, validationResults))
{
errorProvider.SetError(nameTextBox, validationResults.First().ErrorMessage);
e.Cancel = true;
}
else
{
errorProvider.SetError(nameTextBox, null);
}
}
Validator.TryValidateObject
方法来验证整个对象,并显示所有的验证错误。例如:private void saveButton_Click(object sender, EventArgs e)
{
var user = (User)bindingSource.Current;
var validationContext = new ValidationContext(user);
var validationResults = new List<ValidationResult>();
if (!Validator.TryValidateObject(user, validationContext, validationResults, true))
{
foreach (var validationResult in validationResults)
{
var control = GetControlByPropertyName(validationResult.MemberNames.First());
errorProvider.SetError(control, validationResult.ErrorMessage);
}
}
else
{
// 保存数据的逻辑
}
}
通过以上步骤,可以在Winforms中使用数据注释验证器来验证数据的有效性,并在出现错误时显示错误提示。
领取专属 10元无门槛券
手把手带您无忧上云