MaskedTextBox.TypeValidationCompleted MaskedTextBox.TypeValidationCompleted MaskedTextBox.TypeValidationCompleted MaskedTextBox.TypeValidationCompleted Event


発生したときにMaskedTextBoxを使用して現在の値の解析を完了した、ValidatingTypeプロパティ。Occurs when MaskedTextBox has finished parsing the current value using the ValidatingType property.

 event System::Windows::Forms::TypeValidationEventHandler ^ TypeValidationCompleted;
public event System.Windows.Forms.TypeValidationEventHandler TypeValidationCompleted;
member this.TypeValidationCompleted : System.Windows.Forms.TypeValidationEventHandler 
Public Custom Event TypeValidationCompleted As TypeValidationEventHandler 

次のコード例は、有効なと、ユーザーの入力を解析しようと試みますDateTimeオブジェクト。The following code example attempts to parse the user's input as a valid DateTime object. 失敗した場合、TypeValidationCompletedイベント ハンドラーでは、ユーザーにエラー メッセージが表示されます。If it fails, the TypeValidationCompleted event handler displays an error message to the user. 値が有効な場合DateTimeコードは、指定された日付が今日の日付より前にないことを確認します。If the value is a valid DateTime, the code verifies that the date supplied is not prior to today's date. このコード例では、Windows フォーム プロジェクトが含まれている必要があります、MaskedTextBoxという名前のコントロールMaskedTextBox1ToolTipという名前のコントロールToolTip1します。This code example requires that your Windows Forms project contains a MaskedTextBox control named MaskedTextBox1 and a ToolTip control named ToolTip1.

private void Form1_Load(object sender, EventArgs e)
    maskedTextBox1.Mask = "00/00/0000";
    maskedTextBox1.ValidatingType = typeof(System.DateTime);
    maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler(maskedTextBox1_TypeValidationCompleted);
    maskedTextBox1.KeyDown += new KeyEventHandler(maskedTextBox1_KeyDown);

    toolTip1.IsBalloon = true;

void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
    if (!e.IsValidInput)
        toolTip1.ToolTipTitle = "Invalid Date";
        toolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", maskedTextBox1, 0, -20, 5000);
        //Now that the type has passed basic type validation, enforce more specific type rules.
        DateTime userDate = (DateTime)e.ReturnValue;
        if (userDate < DateTime.Now)
            toolTip1.ToolTipTitle = "Invalid Date";
            toolTip1.Show("The date in this field must be greater than today's date.", maskedTextBox1, 0, -20, 5000);
            e.Cancel = true;

// Hide the tooltip if the user starts typing again before the five-second display limit on the tooltip expires.
void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.MaskedTextBox1.Mask = "00/00/0000"
    Me.MaskedTextBox1.ValidatingType = GetType(System.DateTime)

    Me.ToolTip1.IsBalloon = True
End Sub

Private Sub MaskedTextBox1_TypeValidationCompleted(ByVal sender As Object, ByVal e As TypeValidationEventArgs) Handles MaskedTextBox1.TypeValidationCompleted
    If (Not e.IsValidInput) Then
        Me.ToolTip1.ToolTipTitle = "Invalid Date"
        Me.ToolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", Me.MaskedTextBox1, 0, -20, 5000)
        ' Now that the type has passed basic type validation, enforce more specific type rules.
        Dim UserDate As DateTime = CDate(e.ReturnValue)
        If (UserDate < DateTime.Now) Then
            Me.ToolTip1.ToolTipTitle = "Invalid Date"
            Me.ToolTip1.Show("The date in this field must be greater than today's date.", Me.MaskedTextBox1, 0, -20, 5000)
            e.Cancel = True
        End If
    End If
End Sub

' Hide the tooltip if the user starts typing again before the five-second display limit on the tooltip expires.
Private Sub MaskedTextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MaskedTextBox1.KeyDown
End Sub


MaskedTextBoxコントロールがによって定義された型に対してユーザー入力を検証して必要に応じてそのMaskedTextBox.ValidatingTypeプロパティ。The MaskedTextBox control will optionally validate user input against the type defined by its MaskedTextBox.ValidatingType property. このプロパティがないnull、次の一連のイベントが発生します。When this property is not null, the following series of events occurs:

  1. 検証シーケンスは、次のいずれかが発生すると開始します。The validation sequence begins when one of the following occurs:

  2. これらのイベントのいずれかへの呼び出しで発生、Parseで指定された型のメソッド、ValidatingTypeプロパティ。Any of these events result in a call to the Parse method of the type specified with the ValidatingType property. Parse 書式設定された入力文字列のターゲット型への変換を担当します。Parse is responsible for the conversion of the formatted input string to the target type. 検証に成功した変換に成功したに相当します。A successful conversion equates to a successful validation.

  3. Parseから制御が戻る、TypeValidationCompletedイベントが発生します。After Parse returns, the TypeValidationCompleted event is raised. このイベントのイベント ハンドラーは、型またはマスクの検証処理を実行する最もよく実装されます。The event handler for this event is most commonly implemented to perform type or mask validation processing. 受信、TypeValidationEventArgs変換に関する情報を含むパラメーターなど、IsValidInputメンバーは、変換が成功したかどうかを示します。It receives a TypeValidationEventArgs parameter containing information about the conversion; for example, the IsValidInput member indicates whether the conversion was successful.

  4. イベント ハンドラーの後、TypeValidationCompletedイベントを返します、標準の検証イベントValidatingが発生します。After the event handler for the TypeValidationCompleted event returns, the standard validation event, Validating, is raised. イベントのキャンセルなどの標準的な検証を実行するハンドラーを実装できます。A handler can be implemented to perform standard validation, perhaps including canceling the event.

  5. 手順 3. で、イベントが取り消されない場合、標準は検証イベントを制御Validatedが発生します。If the event is not canceled in step 3, the standard control validation event Validated is raised.

場合、Cancelプロパティに設定されてtrueで、TypeValidationCompletedイベント ハンドラーでは、イベントがキャンセルされます、MaskedTextBox場合を除いて、コントロールがフォーカスを保持それに続くValidatingイベント設定のバージョン、CancelEventArgs.Cancelプロパティ戻るfalseします。If the Cancel property is set to true in the TypeValidationCompleted event handler, the event will be canceled and the MaskedTextBox control retains focus, unless the subsequent Validating event sets its version of the CancelEventArgs.Cancel property back to false.