MaskedTextBox.ValidatingType Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 ToolTipToolTip1
gerekir.
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 MaskCompletedtrue
gerç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)