Share via


MaskedTextBox.ValidatingType Özellik

Tanım

Kullanıcı tarafından veri girişini doğrulamak için kullanılan veri türünü alır veya ayarlar.

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

Özellik Değeri

Type Doğrulamada kullanılan veri türünü temsil eden. Varsayılan değer: null.

Öznitelikler

Örnekler

Aşağıdaki kod örneği, kullanıcının girişini geçerli DateTimebir olarak ayrıştırmaya çalışır. Başarısız olursa, TypeValidationCompleted olay işleyicisi kullanıcıya bir hata iletisi görüntüler. Değer geçerli DateTimebir ise kod, sağlanan tarihin bugünün tarihinden önce olmadığından emin olmak için ek bir denetim gerçekleştirir. Bu kod örneği, Windows Forms projenizin adlı bir MaskedTextBox denetim ve adlı MaskedTextBox1 bir denetim içermesi ToolTipToolTip1gerekir.

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

Açıklamalar

Maskeler, bir kullanıcının girişinin belirli bir tür için geçerli bir değeri temsil edeceği garantisini vermez. Aşağıdaki C# kodu bir maske gösterir:

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

Aşağıdaki Visual Basic kodu bir maske gösterir:

MaskedTextBox1.Mask = "99/99/9999"

Bu maske, kullanıcının sekiz basamak girmesini talep edebilir, ancak kullanıcının doğru aralıkta ay, tarih ve yıl değerlerini girdiğini doğrulayamaz; Maskeyle ilgili olarak "20/12/2003" ve "70/90/0000" eşit oranda geçerlidir.

Kullanıcı tarafından girilen verilerin doğru aralıkta olup olmadığını doğrulamak için kullanabilirsiniz ValidatingType . Daha önce bahsedilen örnekte, bu verilere türün DateTime bir örneğini atayabilirsiniz. Denetimdeki geçerli metin, kullanıcı denetimden ayrıldığında doğrulanır. Olayın izlenmesiyle TypeValidationCompleted verilerin doğrulamada başarısız olup olmadığını belirleyebilirsiniz. MaskedTextBoxdenetimi yalnızca ise MaskCompletedtruegerçekleştirirValidatingType.

ile ValidatingTypekendi özel veri türlerinizi kullanmak istiyorsanız, bir dizeyi parametre olarak alan statik Parse bir yöntem uygulamanız gerekir. Bu yöntem aşağıdaki imzalardan biriyle veya her ikisiyle de uygulanmalıdır:

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

Şunlara uygulanır

Ayrıca bkz.