MaskedTextBox.ValidatingType MaskedTextBox.ValidatingType MaskedTextBox.ValidatingType MaskedTextBox.ValidatingType Property

定義

ユーザーによるデータ入力を検証するために使用するデータ型を取得または設定します。Gets or sets the data type used to verify the data input by the user.

public:
 property Type ^ ValidatingType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.Browsable(false)]
public Type ValidatingType { get; set; }
member this.ValidatingType : Type with get, set
Public Property ValidatingType As Type

プロパティ値

検証で使用されるデータ型を表す TypeA Type representing the data type used in validation. 既定値は、null です。The default is null.

次のコード例では、ユーザーの入力を有効DateTimeなとして解析しようとしています。The following code example attempts to parse the user's input as a valid DateTime. 失敗した場合は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 performs an additional check to ensure that the date supplied is not prior to today's date. このコード例では、Windows フォームプロジェクトにとMaskedTextBoxいうMaskedTextBox1名前のコントロールToolTipとと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);
    }
    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

注釈

マスクは自身ではなく、ユーザーの入力が特定の型の有効な値を表すことを保証します。Masks do not in themselves guarantee that a user's input will represent a valid value for a given type. 次C#のコードはマスクを示しています。The following C# code shows a mask:

maskedTextBox1.Mask = "99/99/9999";  

次の Visual Basic コードはマスクを示しています。The following Visual Basic code shows a mask:

MaskedTextBox1.Mask = "99/99/9999"

このマスクは、ユーザーが8桁を入力することを要求できますが、ユーザーが正しい範囲の月、日付、年の値を入力することを確認することはできません。"12/20/2003" と "70/90/0000" は、マスクに関係がある限り、同じように有効です。This mask can demand that the user enter eight digits, but cannot verify that the user enters month, date, and year values in the correct range; "12/20/2003" and "70/90/0000" are equally valid as far as the mask is concerned.

を使用ValidatingTypeすると、ユーザーが入力したデータが正しい範囲内にあるかどうかを確認できます。前述の例では、 DateTime型のインスタンスを割り当てています。You can use ValidatingType to verify whether the data entered by the user falls within the correct range - in the previously mentioned case, by assigning it an instance of the DateTime type. コントロール内の現在のテキストは、ユーザーがコントロールを離れると検証されます。The current text in the control will be validated either when the user leaves the control. TypeValidationCompletedイベントの監視によってデータが検証に失敗したかどうかを判断できます。You can determine whether or not the data fails validation by monitoring for the TypeValidationCompleted event. MaskedTextBoxValidatingType MaskCompletedの場合にのみ、のチェックが実行されます。 trueMaskedTextBox will only perform the check against ValidatingType if MaskCompleted is true.

ValidatingType独自のカスタムデータ型を使用する場合は、パラメーターとして文字列Parseを受け取る静的メソッドを実装する必要があります。If you want to use your own custom data types with ValidatingType, you must implement a static Parse method that takes a string as a parameter. このメソッドは、次のいずれかまたは両方のシグネチャを使用して実装する必要があります。This method must be implemented with one or both of the following signatures:

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

適用対象

こちらもご覧ください