Input for WinForms
ユーザー入力エラー
C1Input コントロールの使い方 > エラー処理 > ユーザー入力エラー

C1Input が入力値の解析または検証時にエラーを検出すると、ValidationError イベントが発生します。デフォルトでは、次にエラーメッセージが表示されます。このデフォルトの動作は、さまざまな方法で変更およびカスタマイズできます。

C1Input コントロールには、エラー処理に影響する設定を含む ErrorInfo プロパティ(ErrorInfo クラスのプロパティ)があります。

プロパティ 説明
BeepOnError True の場合、コントロールは、エラーを通知するビープ音を鳴らします。デフォルト:False
CanLoseFocus True の場合、コントロールは、エラーに関係なくフォーカスを失うことができます。このプロパティはデフォルトで False です。つまり、コントロールは、エラーが解決されるまでフォーカスを持ったままです。ただし、ErrorAction を SetValueOnError または ResetValue に設定すると、コントロールの値をリセットすることにより、エラーの後にコントロールを離れることができます。
ErrorAction エラーの発生時にコントロールの値に対して実行するアクションを指定する列挙値です。ErrorAction が None(デフォルト)に設定されている場合、Value は変更されず、更新に失敗する前の値のままになります。ErrorAction が SetValueOnError に設定されている場合、コントロールの Value は、ErrorInfo クラスの ValueOnError プロパティで指定された値に設定されます。ErrorAction が ResetValue に設定されている場合、コントロールの Value は、コントロールが編集モードに入る直前の値に設定されます。ErrorAction プロパティを ThrowException に設定すると、実行が中断され、例外 ValidationException が生成されます。
ErrorMessage 標準のメッセージボックスや例外に表示されるエラーメッセージです。
ErrorMessageCaption エラーメッセージボックスのタイトルバーに表示するテキストです。
ErrorProvider コントロールのエラー状態を示すために使用される ErrorProvider オブジェクトを取得または設定します。
ShowErrorMessage True の場合は(デフォルト)、標準のエラーメッセージが表示されます。
ValueOnError ErrorAction が SetValueOnError に設定されている場合に、コントロールのリセットに使用される値です。
ValueOnErrorIsDbNull ValueOnError を DBNull に設定するために使用されるブール値プロパティです(設計時のみ必要)。

これ以外にも、編集マスクエラー(MaskInfo.ErrorMessage)、解析(ParseInfo.ErrorMessage)、事前/事後検証(PreValidation.ErrorMessagePostValidation.ErrorMessage)などのアクションに対して ErrorInfo.ErrorMessage を指定できます。これらのサブオブジェクトのいずれかで、特別なエラーメッセージが指定されていない場合は、コントロールの ErrorInfo.ErrorMessage が適用されます。メッセージボックスを表示する代わりに、ErrorProvider アイコンを使用してエラーを示すことができます。それには、ErrorProvider を ErrorProvider コンポーネントに、ShowErrorMessage を False に設定します。

上に示したプロパティをコントロールの ErrorInfo オブジェクトで設定すると、そのコントロールのすべてのエラー処理に影響します。それらのプロパティの値をプログラムでカスタマイズして、特定のエラーが発生したときにエラーを処理できます。それには、ErrorInfo 引数を ValidationError イベントに渡します。ValidationError に渡される ErrorInfo 引数は、コントロールの ErrorInfo とそのすべてのプロパティのコピーです。このコピーは独立しています。つまり、現在のエラーの ErrorInfo イベント引数のプロパティを変更しても、コントロールの ErrorInfo 設定には影響しません。ValidationError イベントの ErrorInfo プロパティを設定して、エラーの処理方法を指定します。たとえば、標準のエラーメッセージを表示する代わりに独自のメッセージを表示するには、ShowErrorMessage プロパティを False に設定します。また、ValueOnError を変更したり(ErrorAction を SetValueOnError に設定)、ErrorMessage を変更することができます。コントロールの ErrorMessage のプロパティではなく、ValidationError イベントに渡される ErrorInfo 引数のプロパティを設定する必要があることに注意してください。

ValidationError イベントの後に、イベントの ErrorInfo 引数で指定されたとおりにエラー処理が実行されます。ErrorAction が ThrowException に設定されている場合は、ErrorMessage テキストを使用して例外が生成されます。BeepOnError が True に設定されている場合は、警告音が鳴ります。ShowErrorMessage が True に設定されている場合は、標準のエラーメッセージボックスに ErrorMessage テキストが表示されます。その後、ErrorAction で指定されている場合は、コントロールの値が変更されます。フォーカスをコントロールの外に移動しようとして検証が発生した場合、別のコントロールにフォーカスを移動できるか、それとも移動がキャンセルされるかは、CanLoseFocus の設定に依存します。ErrorProvider プロパティが ErrorProvider コンポーネントに設定されている場合は、そのコンポーネントを使用して、問題があるコントロールの近くにエラーアイコンと ErrorMessage ツールチップが表示されます(ErrorProvider.SetError が呼び出される)。

イベントコードを使用してプログラムで解析または検証を行い、エラー状態でイベントを終了する(イベントの Succeeded 引数を False に設定)場合は、イベントに渡された ErrorInfo 引数のプロパティを設定することで、エラーの内容とその処理方法を記述できます。この引数は、PreValidatingParsingPostValidating の各イベントに提供されます。この引数の初期値は、コントロールの ErrorInfo プロパティから取得されます。イベントで変更した ErrorInfo 引数は、次に ValidationError イベントに渡されます。前に説明したように、このイベントでもさらに引数を変更できます。

関連トピック