MaskedTextBox.TypeValidationCompleted イベント

定義

MaskedTextBoxValidatingType プロパティを使用して現在の値の解析を完了した場合に発生します。

public:
 event System::Windows::Forms::TypeValidationEventHandler ^ TypeValidationCompleted;
public 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 オブジェクトとして解析しようとします。 失敗した場合、イベント ハンドラーは TypeValidationCompleted ユーザーにエラー メッセージを表示します。 値が有効 DateTimeな の場合、コードは、指定された日付が今日の日付より前ではないことを確認します。 このコード例では、Windows フォーム プロジェクトに という名前のMaskedTextBoxコントロールと という名前MaskedTextBox1ToolTip1のコントロールがToolTip含まれている必要があります。

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);
    }
    else
    {
        //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)
{
    toolTip1.Hide(maskedTextBox1);
}
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)
    Else
        ' 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
    Me.ToolTip1.Hide(Me.MaskedTextBox1)
End Sub

注釈

コントロールは MaskedTextBox 、必要に応じて、そのプロパティで定義されている型に対してユーザー入力を MaskedTextBox.ValidatingType 検証します。 このプロパティが でない null場合、次の一連のイベントが発生します。

  1. 検証シーケンスは、次のいずれかが発生したときに開始されます。

    • MaskedTextBox コントロールがフォーカスを緩めます。

    • Textプロパティが取得されます。

    • ValidateText メソッドが呼び出されます。

  2. これらのイベントのいずれかが発生すると、 プロパティで指定された型のメソッドがValidatingType呼び出Parseされます。 Parse は、書式設定された入力文字列をターゲット型に変換する役割を担います。 変換が成功すると、検証が成功した場合と同じになります。

  3. が返された後 ParseTypeValidationCompleted イベントが発生します。 このイベントのイベント ハンドラーは、型検証処理またはマスク検証処理を実行するために最も一般的に実装されます。 変換に関する情報を TypeValidationEventArgs 含むパラメーターを受け取ります。たとえば、 IsValidInput メンバーは変換が成功したかどうかを示します。

  4. イベントのイベント ハンドラーが返されると TypeValidationCompleted 、標準の検証イベント Validatingである が発生します。 イベントの取り消しなど、標準の検証を実行するハンドラーを実装できます。

  5. 手順 3 でイベントが取り消されない場合は、標準コントロール検証イベント Validated が発生します。

Cancelイベント ハンドラーで TypeValidationCompleted プロパティが にtrue設定されている場合、後続Validatingのイベントがプロパティのバージョンを MaskedTextBox に戻さない限り、イベントは取り消され、コントロールはフォーカスをCancelEventArgs.Cancelfalse保持します。

適用対象

こちらもご覧ください