Windows Forms のための検証コントロール
ASP.NET Web ページでは検証はASP.NET 検証コントロールを利用して簡単に行えます。
| 必須エントリ | RequiredFieldValidator | データの値が存在しない場合は、 |
| 値の比較 | CompareValidator | |
| 範囲の検査 | RangeValidator | |
| パターンの一致 | RegularExpressionValidator | ValidationExpression プロパティの正規表現パターンと一致しない場合は、RegularExpressionValidator
コントロールがその |
Windows Formsアプリケーションでは、Control.Validating
イベントを利用してコントロール毎に検証するプログラムを作成するか、保存時に一気にチェックするか、いづれにしてもプログラムを作成していました。
今回はTextBoxで上記の検証を自動的にやるカスタムコントロールを作成してみました。
@ITでの記事のマスターメンテナンスのプログラムもこのコントロールを使うと、ノーコーディングでチェックルーチンまで実装できるので、簡単なアプリなら本当にノーコーディングで出来てしまう可能性があります。
さて、テスト画面を以下のように作っています。
立体的なパネルの中のテキストボックスが今回作成したValidationTextBoxです。
EnableXXXXValidatorは各Validatorの有効無効をあらわします。
UseControlToXXXXは各値をコントロールのテキストから取得するかプロパティで与えるかを切り替えます。
まずはVisualStudio2005(ExpressEditionはだめかもしれません)でリビルドして実行して、
EnableXXXXValidatorをOnにして、ValidationTextBoxに数値を入れて確認してみてください。
プログラム圧縮ファイル
ValidationControls.zip
2007/1/11に更新しました。
Validationクラスにstaticなプロパティを追加しました。
| プロパティ | Group | 検証する検証グループの名前を取得または設定します。 |
| ErrorMessageList | エラーメッセージに使用するテキストのリストを取得します。 | |
| メソッド | Initiallize | 検証グループの名前をクリアして全グループ検証としエラーメッセージに使用するテキストのリストを初期化します。 |
| Initiallize(group) | 検証グループの名前をセットしてエラーメッセージに使用するテキストのリストを初期化します。 |
Validationプロパティにプロパティを追加しました。
| プロパティ | ValidationGroup | この検証コントロールが属する検証グループの名前を取得または設定します。 |
| CompareOperator | 一致検証コントロールの比較演算子を取得または設定します。 データ型だけの比較:DataTypeCheck 等しいかどうかの比較:Equal より大きいかどうかの比較:GreaterThan 等しいまたはより大きいかどうかの比較:GreaterThanEqual より小さいかどうかの比較:LessThan 等しいまたはより小さいかどうかの比較:LessThanEqual 等しくないかどうかの比較:NotEqual |
元々のプロパティです。
プロパティやイベントは通常のTextBoxに以下のように追加されています。
| プロパティ | Validation | 検証プロパティを取得または設定します。 |
| イベント | ValidationError | エラーを検出したときに発生します。 |
Validationプロパティは以下のようなプロパティやイベントがあります。
| プロパティ | IsValid | 指定した値オブジェクトが型に対して有効かどうかを示す値を返します。 |
| ErrorMessage | エラーメッセージに使用するテキストを取得または設定します。既定値は Empty です | |
| ItemName | エラーメッセージの{0}に使用する項目名テキストを取得または設定します。 | |
| ErrorProvider | エラーメッセージを表示するエラープロバイダー。 | |
| EnableRequiredFieldValidator | 入力必須の検証が有効かどうかを示す値を返します。 | |
| RequiredFieldErrorMessage | 入力必須エラーメッセージに使用するテキストを取得または設定します。 | |
| ValidationType | コントロールに入力する値の型を取得または設定します。 | |
| TypeMismatchErrorMessage | 入力形式異常エラーメッセージに使用するテキストを取得または設定します。 | |
| EnableCompareValidator | 一致の検証が有効かどうかを示す値を返します。 | |
| ControlToCompare | 一致検証コントロールを取得または設定します。(指定しないとValueToCompareが有効になります) | |
| CompareControlItemName | 一致検証コントロールのエラーメッセージの{1}に使用する項目名テキストを取得または設定します。 | |
| ValueToCompare | 一致検証テキストを取得または設定します。エラーメッセージの{1}にも使用します。 | |
| CompareErrorMessage | 一致検証エラーメッセージに使用するテキストを取得または設定します。 | |
| EnableRangeValidator | 範囲の検証が有効かどうかを示す値を返します。 | |
| ControlToMinimum | 最小値検証コントロールを取得または設定します。(指定しないとMinimumValueが有効になります) | |
| MinimumControlItemName | 最小値検証コントロールのエラーメッセージの{1}に使用する項目名テキストを取得または設定します。 | |
| MinimumValue | 最小値テキストを取得または設定します。エラーメッセージの{1}にも使用します。 | |
| ControlToMaximum | 最大値検証コントロールを取得または設定します。(指定しないとMaximumValueが有効になります) | |
| MaximumControlItemName | 最大値検証コントロールのエラーメッセージの{1}に使用する項目名テキストを取得または設定します。 | |
| MaximumValue | 最大値テキストを取得または設定します。エラーメッセージの{1}にも使用します。 | |
| RangeErrorMessage | 範囲検証エラーメッセージに使用するテキストを取得または設定します。 | |
| EnableRegularExpressionValidator | 正規表現の検証が有効かどうかを示す値を返します | |
| ValidationExpression | 正規表現検証テキストを取得または設定します。 | |
| RegularExpressionErrorMessage | 正規表現検証エラーメッセージに使用するテキストを取得または設定します。 | |
| イベント | ValidationPropertyChanged | パラメータが変更されたときに発生します。 |
| ValidationError | エラーを検出したときに発生します。 | |
| メソッド | SetError | エラーメッセージ(nullの場合はエラーなし)を設定します。 |



