Diciamo che ho una semplice classeAssociazione dati e gettando eccezione nel setter
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;
}
}
}
Poi voglio installare un binding per questa classe:
txtAge.DataBindings.Add("Text", dataSource, "Name");
Ora, se entro in valore di età non corretto nel la casella di testo (diciamo 200) l'eccezione nel setter verrà inghiottita e non potrò fare nulla fino a quando non correggo il valore nella casella di testo. Intendo dire che la casella di testo non sarà in grado di perdere la concentrazione. È tutto silenzioso - nessun errore - non puoi fare nulla (nemmeno chiudere il modulo o l'intera applicazione) finché non correggi il valore.
Sembra un bug, ma la domanda è: che cosa è una soluzione per questo?
C'è un motivo per cui stai un'eccezione piuttosto che attuare IDataErrorInfo? Penso che quest'ultimo sia l'approccio più idiomatico in WinForms (e funziona ancora bene anche in WPF). –