作成日: 2020/04/10 最終更新日: 2020/04/10
文書種別
使用方法
詳細
C1TextBoxを含むInput for WinFormsの各種コントロールには、入力された値の検証を行うためにPreValidationクラスが用意されています。このクラスには、入力したテキストや数値そのものを検証するための各種機能が含まれています。
検証方法には、PatternStringで設定した文字列に基づく整合性チェック、またはPreValidatingイベントを使用した独自コードによるチェックの2通りが用意されています。前者の「検証文字列に基づくチェック」を行うには、Validationプロパティを「ExactList」/「RegexPattern」/「Wildcards」のいずれかに設定します。
入力値がPatternStringに基づく検証をクリアしなかった場合、ValidationErrorイベントが発生します。このValidationErrorイベントで、検証エラーメッセージをカスタマイズできます。これにはイベントの e引数 のErrorInfo.ErrorMessageを設定します。
なお、C1TextBoxのErrorInfoクラスの各プロパティを使用すると、エラー発生時のメッセージや挙動などをカスタマイズできます。例えば、ShowErrorMessageプロパティをFalseに設定すると、エラーメッセージを非表示にできます。ErrorActionプロパティを 「SetValueOnError」にし、ValueOnErrorプロパティに文字列を設定すると、エラーが発生した後、C1TextBoxに表示する文字列をValueOnErrorプロパティの値に置き換えることができます。
以下に、 上記の動作を示す簡単なサンプルコードを記載します。
【検証手順】
・新規フォームに3つのC1TextBoxとTextBox(フォーカス移動用コントロール)を貼り付けます。
・下記コードを設定します。
・プロジェクトを実行し、いずれかのC1TextBoxにPatternStringに設定した文字列以外のテキストを入力後、TextBoxをクリックしてフォーカスを移動します。
◎サンプルコード(VB)
検証方法には、PatternStringで設定した文字列に基づく整合性チェック、またはPreValidatingイベントを使用した独自コードによるチェックの2通りが用意されています。前者の「検証文字列に基づくチェック」を行うには、Validationプロパティを「ExactList」/「RegexPattern」/「Wildcards」のいずれかに設定します。
入力値がPatternStringに基づく検証をクリアしなかった場合、ValidationErrorイベントが発生します。このValidationErrorイベントで、検証エラーメッセージをカスタマイズできます。これにはイベントの e引数 のErrorInfo.ErrorMessageを設定します。
なお、C1TextBoxのErrorInfoクラスの各プロパティを使用すると、エラー発生時のメッセージや挙動などをカスタマイズできます。例えば、ShowErrorMessageプロパティをFalseに設定すると、エラーメッセージを非表示にできます。ErrorActionプロパティを 「SetValueOnError」にし、ValueOnErrorプロパティに文字列を設定すると、エラーが発生した後、C1TextBoxに表示する文字列をValueOnErrorプロパティの値に置き換えることができます。
以下に、 上記の動作を示す簡単なサンプルコードを記載します。
【検証手順】
・新規フォームに3つのC1TextBoxとTextBox(フォーカス移動用コントロール)を貼り付けます。
・下記コードを設定します。
・プロジェクトを実行し、いずれかのC1TextBoxにPatternStringに設定した文字列以外のテキストを入力後、TextBoxをクリックしてフォーカスを移動します。
◎サンプルコード(VB)
Imports C1.Win.C1Input
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' PatternStringを使用して検証します
' 1)セパレータで区切られた有効値に基づき検証
C1TextBox1.PreValidation.Validation = PreValidationTypeEnum.ExactList
C1TextBox1.PreValidation.ItemSeparator = ","
C1TextBox1.PreValidation.PatternString = "a,b,c" ' "a,b,c"以外でエラー"a,b,c"以外でエラー
C1TextBox1.PreValidation.ErrorMessage = "c1TextBox1でエラーが発生しました" 'デフォルトのエラーメッセージ
' ErrorInfoの初期設定
C1TextBox1.ErrorInfo.ErrorMessageCaption = "c1TextBox検証エラー" 'エラーダイアログのタイトル
C1TextBox1.ErrorInfo.ErrorMessage = "エラーが発生しました" 'デフォルトのエラーメッセージ(PreValidation.ErrorMessageのほうが優先)
' 検証エラー発生時にテキスト置換を行わせます
C1TextBox1.ErrorInfo.ErrorAction = ErrorActionEnum.SetValueOnError
C1TextBox1.ErrorInfo.ValueOnError = "a"
' (2)正規表現に基づく検証
C1TextBox2.PreValidation.Validation = PreValidationTypeEnum.RegexPattern
C1TextBox2.PreValidation.PatternString = "[0-9]" '値以外でエラー
C1TextBox2.PreValidation.ErrorMessage = "c1TextBox2でエラーが発生しました" 'デフォルトのエラーメッセージ
' ErrorInfoの初期設定
C1TextBox2.ErrorInfo.ErrorMessageCaption = "c1TextBox検証エラー" 'エラーダイアログのタイトル
C1TextBox2.ErrorInfo.ErrorMessage = "エラーが発生しました" 'デフォルトのエラーメッセージ(PreValidation.ErrorMessageのほうが優先)
' 検証エラー発生時にテキスト置換を行わせます
C1TextBox2.ErrorInfo.ErrorAction = ErrorActionEnum.SetValueOnError
C1TextBox2.ErrorInfo.ValueOnError = "a"
' (3)ワイルドカードに基づく検証
C1TextBox3.PreValidation.Validation = PreValidationTypeEnum.Wildcards
C1TextBox3.PreValidation.PatternString = "a*" '/文字列の先頭が"a"以外の場合エラー
C1TextBox3.PreValidation.ErrorMessage = "c1TextBox3でエラーが発生しました" 'デフォルトのエラーメッセージ
' ErrorInfoの初期設定
C1TextBox3.ErrorInfo.ErrorMessageCaption = "c1TextBox検証エラー" 'エラーダイアログのタイトル
C1TextBox3.ErrorInfo.ErrorMessage = "エラーが発生しました" 'デフォルトのエラーメッセージ(PreValidation.ErrorMessageのほうが優先)
' 検証エラー発生時にテキスト置換を行わせます
C1TextBox3.ErrorInfo.ErrorAction = ErrorActionEnum.SetValueOnError
C1TextBox3.ErrorInfo.ValueOnError = "a"
End Sub
Private Sub C1TextBox1_ValidationError(sender As Object, e As C1.Win.C1Input.ValidationErrorEventArgs) Handles C1TextBox1.ValidationError
MessageBox.Show("(ValidationErrorで変更する前のエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(ValidationError)")
e.ErrorInfo.ErrorMessage = "これは、ValidationErrorイベントで設定したエラーメッセージです"
End Sub
Private Sub C1TextBox2_ValidationError(sender As Object, e As C1.Win.C1Input.ValidationErrorEventArgs) Handles C1TextBox2.ValidationError
MessageBox.Show("(ValidationErrorで変更する前のエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(ValidationError)")
e.ErrorInfo.ErrorMessage = "これは、ValidationErrorイベントで設定したエラーメッセージです"
End Sub
Private Sub C1TextBox3_ValidationError(sender As Object, e As C1.Win.C1Input.ValidationErrorEventArgs) Handles C1TextBox3.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_C1TextBox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// PatternStringを使用して検証します
// (1)セパレータで区切られた有効値に基づき検証
c1TextBox1.PreValidation.Validation = PreValidationTypeEnum.ExactList;
c1TextBox1.PreValidation.ItemSeparator = ",";
c1TextBox1.PreValidation.PatternString = "a,b,c"; //"a,b,c"以外でエラー
c1TextBox1.PreValidation.ErrorMessage = "c1TextBox1でエラーが発生しました"; //デフォルトのエラーメッセージ
// ErrorInfoの初期設定
c1TextBox1.ErrorInfo.ErrorMessageCaption = "c1TextBox検証エラー"; //エラーダイアログのタイトル
c1TextBox1.ErrorInfo.ErrorMessage = "エラーが発生しました"; //デフォルトのエラーメッセージ(PreValidation.ErrorMessageのほうが優先)
// 検証エラー発生時にテキスト置換を行わせます
c1TextBox1.ErrorInfo.ErrorAction = ErrorActionEnum.SetValueOnError;
c1TextBox1.ErrorInfo.ValueOnError = "a";
// (2)正規表現に基づく検証
c1TextBox2.PreValidation.Validation = PreValidationTypeEnum.RegexPattern;
c1TextBox2.PreValidation.PatternString = "[0-9]"; //数値以外でエラー
c1TextBox2.PreValidation.ErrorMessage = "c1TextBox2でエラーが発生しました"; //デフォルトのエラーメッセージ
// ErrorInfoの初期設定
c1TextBox2.ErrorInfo.ErrorMessageCaption = "c1TextBox検証エラー"; //エラーダイアログのタイトル
c1TextBox2.ErrorInfo.ErrorMessage = "エラーが発生しました"; //デフォルトのエラーメッセージ(PreValidation.ErrorMessageのほうが優先)
// 検証エラー発生時にテキスト置換を行わせます
c1TextBox2.ErrorInfo.ErrorAction = ErrorActionEnum.SetValueOnError;
c1TextBox2.ErrorInfo.ValueOnError = "1";
// (3)ワイルドカードに基づく検証
c1TextBox3.PreValidation.Validation = PreValidationTypeEnum.Wildcards;
c1TextBox3.PreValidation.PatternString = "a*"; //文字列の先頭が"a"以外の場合エラー
c1TextBox3.PreValidation.ErrorMessage = "c1TextBox3でエラーが発生しました"; //デフォルトのエラーメッセージ
// ErrorInfoの初期設定
c1TextBox3.ErrorInfo.ErrorMessageCaption = "c1TextBox検証エラー"; //エラーダイアログのタイトル
c1TextBox3.ErrorInfo.ErrorMessage = "エラーが発生しました"; //デフォルトのエラーメッセージ(PreValidation.ErrorMessageのほうが優先)
// 検証エラー発生時にテキスト置換を行わせます
c1TextBox3.ErrorInfo.ErrorAction = ErrorActionEnum.SetValueOnError;
c1TextBox3.ErrorInfo.ValueOnError = "a";
}
private void c1TextBox1_ValidationError(object sender, ValidationErrorEventArgs e)
{
MessageBox.Show("(ValidationErrorで変更する前のエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(ValidationError)");
e.ErrorInfo.ErrorMessage = "これは、ValidationErrorイベントで設定したエラーメッセージです";
}
private void c1TextBox2_ValidationError(object sender, ValidationErrorEventArgs e)
{
MessageBox.Show("(ValidationErrorで変更する前のエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(ValidationError)");
e.ErrorInfo.ErrorMessage = "これは、ValidationErrorイベントで設定したエラーメッセージです";
}
private void c1TextBox3_ValidationError(object sender, ValidationErrorEventArgs e)
{
MessageBox.Show("(ValidationErrorで変更する前のエラーメッセージ)" + Environment.NewLine + e.ErrorInfo.ErrorMessage, "エラーメッセージのチェック(ValidationError)");
e.ErrorInfo.ErrorMessage = "これは、ValidationErrorイベントで設定したエラーメッセージです";
}
}
}
関連情報
旧文書番号
85269