えムナウのプログラミングのページ

えムナウ の とどけもの

 Logo えムナウBlog@AILight
えムナウBlog@Wankuma

目次

利用状況

イメージ ギャラリー

カテゴリ

Links
 

inetaj

MSMVPロゴ
MSMVP Visual C# 2005/01-2007/12

Windows Forms のための検証コントロール

ASP.NET Web ページでは検証はASP.NET 検証コントロールを利用して簡単に行えます。
必須エントリ RequiredFieldValidator データの値が存在しない場合は、ErrorMessage プロパティのテキストを表示します。
値の比較 CompareValidator ValueToCompare プロパティを、比較する文字列値に設定します。検証が失敗した場合は、ErrorMessage プロパティにテキストを表示します。
範囲の検査 RangeValidator MinimumValue プロパティと MaximumValue プロパティを使用して、範囲の最小値と最大値を指定します。検証が失敗した場合は、ErrorMessage プロパティにテキストを表示します。
パターンの一致 RegularExpressionValidator ValidationExpression プロパティの正規表現パターンと一致しない場合は、RegularExpressionValidator コントロールがその ErrorMessage プロパティに格納されている文字列を表示します。


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の場合はエラーなし)を設定します。