作成日: 2020/04/10 最終更新日: 2020/04/10
文書種別
使用方法
詳細
C1TextBoxを含むInput for WinFormsの各種コントロールには、入力された値の検証を行うためにPreValidationクラスが用意されています。このクラスには、入力したテキストや数値を検証するための各種機能が含まれています。
入力値の検証方法には、PatternStringで設定した文字列に基づく整合性チェックと、PreValidatingイベントを使用した独自コードによるチェックの2通りがあります。このうち、後者の「イベントを使用した検証」を行うには、Validationプロパティを「PreValidatingEvent」に設定します。
PreValidatingイベントでは、任意のコードを用いて独自の入力値検証を行うことができます。検証に失敗した場合、e.SucceededをFalseに設定すると、ValidationErrorイベントが発生します。なお、PreValidatingイベント/ValidationErrorイベントのいずれでも、検証エラーメッセージをカスタマイズできます。これには各イベントにおける e引数 のErrorInfo.ErrorMessageを設定します。
また、C1TextBoxのErrorInfoクラスの各プロパティを使用すると、エラー発生時のメッセージや挙動などをカスタマイズできます。例えば、ShowErrorMessageプロパティをFalseに設定すると、エラーメッセージを非表示にできます。ErrorActionプロパティを 「SetValueOnError」にし、ValueOnErrorプロパティに文字列を設定すると、エラー発生後に、C1TextBoxに表示する文字列をValueOnErrorプロパティの値に置き換えることができます。
以下に、 上記の動作を示す簡単なサンプルコードを記載します。
【検証手順】
・新規フォームにC1TextBox、CheckBox(エラーを発生させる/させないを指定)、TextBox(フォーカス移動用)を貼り付けます。
・下記コードを設定します。
・プロジェクトを実行し、C1TextBoxに何らかのテキストを入力後、TextBoxをクリックしてフォーカスを移動します。
◎サンプルコード(VB)
入力値の検証方法には、PatternStringで設定した文字列に基づく整合性チェックと、PreValidatingイベントを使用した独自コードによるチェックの2通りがあります。このうち、後者の「イベントを使用した検証」を行うには、Validationプロパティを「PreValidatingEvent」に設定します。
PreValidatingイベントでは、任意のコードを用いて独自の入力値検証を行うことができます。検証に失敗した場合、e.SucceededをFalseに設定すると、ValidationErrorイベントが発生します。なお、PreValidatingイベント/ValidationErrorイベントのいずれでも、検証エラーメッセージをカスタマイズできます。これには各イベントにおける e引数 のErrorInfo.ErrorMessageを設定します。
また、C1TextBoxのErrorInfoクラスの各プロパティを使用すると、エラー発生時のメッセージや挙動などをカスタマイズできます。例えば、ShowErrorMessageプロパティをFalseに設定すると、エラーメッセージを非表示にできます。ErrorActionプロパティを 「SetValueOnError」にし、ValueOnErrorプロパティに文字列を設定すると、エラー発生後に、C1TextBoxに表示する文字列をValueOnErrorプロパティの値に置き換えることができます。
以下に、 上記の動作を示す簡単なサンプルコードを記載します。
【検証手順】
・新規フォームにC1TextBox、CheckBox(エラーを発生させる/させないを指定)、TextBox(フォーカス移動用)を貼り付けます。
・下記コードを設定します。
・プロジェクトを実行し、C1TextBoxに何らかのテキストを入力後、TextBoxをクリックしてフォーカスを移動します。
◎サンプルコード(VB)
Imports C1.Win.C1Input
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' PreValidatingイベントを使用して検証します
C1TextBox1.PreValidation.Validation = PreValidationTypeEnum.PreValidatingEvent
C1TextBox1.PreValidation.ErrorMessage = "PreValidationエラーが発生しました" 'デフォルトのエラーメッセージ
' ErrorInfoの初期設定
C1TextBox1.ErrorInfo.ErrorMessageCaption = "c1TextBox検証エラー" 'エラーダイアログのタイトル
C1TextBox1.ErrorInfo.ErrorMessage = "エラーが発生しました" 'デフォルトのエラーメッセージ(PreValidation.ErrorMessageのほうが優先)
' 検証エラー発生時にテキスト置換を行わせます
C1TextBox1.ErrorInfo.ErrorAction = ErrorActionEnum.SetValueOnError
C1TextBox1.ErrorInfo.ValueOnError = "置換後のテキスト"
' エラーを発生させます
CheckBox1.Checked = True
End Sub
Private Sub C1TextBox1_PreValidating(sender As Object, e As PreValidationEventArgs) Handles C1TextBox1.PreValidating
If CheckBox1.Checked = True Then
MessageBox.Show("(デフォルトのエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(PreValidating)")
e.Succeeded = False ' この場合、ValidationErrorイベントが発生します
e.ErrorInfo.ErrorMessage = "これは、PreValidatingイベントで設定したエラーメッセージです"
End If
End Sub
Private Sub C1TextBox1_ValidationError(sender As Object, e As ValidationErrorEventArgs) Handles C1TextBox1.ValidationError
MessageBox.Show("(ValidationErrorで変更する前のエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(ValidationError)")
e.ErrorInfo.ErrorMessage = "これは、ValidationErrorイベントで設定したエラーメッセージです"
End Sub
End Class
◎サンプルコード(C#)using C1.Win.C1Input;
namespace prj_C1ComboBox
{
public partial class Form1 : Form
{
//bool bError;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// PreValidatingイベントを使用して検証します
c1TextBox1.PreValidation.Validation = PreValidationTypeEnum.PreValidatingEvent;
c1TextBox1.PreValidation.ErrorMessage = "PreValidationエラーが発生しました"; //デフォルトのエラーメッセージ
// ErrorInfoの初期設定
c1TextBox1.ErrorInfo.ErrorMessageCaption = "c1TextBox検証エラー"; //エラーダイアログのタイトル
//c1TextBox1.ErrorInfo.ErrorMessage = "エラーが発生しました"; //デフォルトのエラーメッセージ(PreValidation.ErrorMessageのほうが優先)
// 検証エラー発生時にテキスト置換を行わせます
c1TextBox1.ErrorInfo.ErrorAction = ErrorActionEnum.SetValueOnError;
c1TextBox1.ErrorInfo.ValueOnError = "置換後のテキスト";
// エラーを発生させます
checkBox1.Checked = true;
}
private void c1TextBox1_PreValidating(object sender, PreValidationEventArgs e)
{
if (checkBox1.Checked == true)
{
MessageBox.Show("(デフォルトのエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(PreValidating)");
e.Succeeded = false; // この場合、ValidationErrorイベントが発生します
e.ErrorInfo.ErrorMessage = "これは、PreValidatingイベントで設定したエラーメッセージです";
}
}
private void c1TextBox1_ValidationError(object sender, ValidationErrorEventArgs e)
{
MessageBox.Show("(ValidationErrorで変更する前のエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(ValidationError)");
e.ErrorInfo.ErrorMessage = "これは、ValidationErrorイベントで設定したエラーメッセージです";
}
}
}
関連情報
旧文書番号
85268