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 bir. 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 ay, tarih ve yıl değerlerini doğru aralıkta girdiğinizi 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 komutunu kullanabilirsiniz ValidatingType . Daha önce bahsedilen örnekte, türün DateTime bir örneğini atayabilirsiniz. Denetimdeki geçerli metin, kullanıcı denetimden ayrıldığında doğrulanır. Olayı izleyerek TypeValidationCompleted verilerin doğrulamada başarısız olup olmadığını belirleyebilirsiniz. MaskedTextBoxdenetimi yalnızca olduğunda ValidatingTypeMaskCompletedgerçekleştirirtrue.

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 uygulanmalıdır:

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

Şunlara uygulanır

Ayrıca bkz.