.NETが提供する実際の検証手法を使用することをお勧めします。
Validating
Validated
また、を追加しErrorProvider
て使用し、エラーが何であるかを示すことを強くお勧めします。この例は示されていませんが、グーグルは良い例でいっぱいです。
検証クラスを保持し、各コントロールをクラスのメソッドにサブスクライブするだけです。
たとえば(K&Rを許してください、SOに書き込む方が簡単です。また、これにはいくつかの調整が必要になる場合があります。私はメモリから書き込んでいます):
public MyForm : Form {
Validator validator;
public MyForm() {
validator = new Validator(/*Arguments here*/);
}
public override void OnLoad(EventArgs e) {
base.OnLoad(e);
targetControl.Validating += (o,e) => {
try {
validator.Validate(e);
}
catch(YourException exc) {
e.Cancel = true; //References the validating event args
//Whatever else you want to do
}
}
}
}