簡単なクラスがあるとしましょう
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;
}
}
}
次に、このクラスのバインディングを設定します。
txtAge.DataBindings.Add("Text", dataSource, "Name");
ここで、テキストボックスに誤った年齢値(たとえば200)を入力すると、セッターの例外が飲み込まれ、テキストボックスの値を修正するまで何もできなくなります。つまり、テキストボックスはフォーカスを失うことができなくなります。すべてサイレントで、エラーはありません。値を修正するまで、何もできません(フォームまたはアプリケーション全体を閉じても)。
バグのように見えますが、問題は次のとおりです。これの回避策は何ですか?