Digamos que tengo una clase simpleenlace de datos y lanzar una excepción en el colocador
public class Person
{
public string Name { get; set; }
private int _age;
public int Age
{
get { return _age; }
set
{
if(value < 0 || value > 150)
throw new ValidationException("Person age is incorrect");
_age = value;
}
}
}
Luego Quiero fijar un enlace para esta clase:
txtAge.DataBindings.Add("Text", dataSource, "Name");
Ahora si entro valor de edad incorrecta en el cuadro de texto (digamos 200) se tragará la excepción en el setter y no podré hacer nada hasta que corrija el valor en el cuadro de texto. Quiero decir que el cuadro de texto no podrá perder el foco. Todo está en silencio, sin errores, simplemente no se puede hacer nada (incluso cerrar el formulario o toda la aplicación) hasta que se corrija el valor.
Parece un error, pero la pregunta es: ¿qué es una solución para esto?
¿Hay alguna razón por la que está lanzando una excepción en lugar de implementar IDataErrorInfo? Creo que este último es el enfoque más idiomático en WinForms (y todavía funciona muy bien en WPF). –