MaskedTextBox.ValidatingType Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает тип данных, используемый для проверки входных данных пользователем.
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
Значение свойства
Представляет Type тип данных, используемый в проверке. Значение по умолчанию — null.
- Атрибуты
Примеры
В следующем примере кода выполняется попытка проанализировать входные данные пользователя как допустимые DateTime. В случае сбоя TypeValidationCompleted обработчик событий отображает пользователю сообщение об ошибке. Если значение является допустимым DateTime, код выполняет дополнительную проверку, чтобы убедиться, что указанная дата не до сегодняшней даты. В этом примере кода требуется, чтобы проект Windows Forms содержал MaskedTextBox элемент управления с именем MaskedTextBox1 и ToolTip элементом управления.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
Комментарии
Маски сами по себе не гарантируют, что входные данные пользователя будут представлять допустимое значение для заданного типа. В следующем коде C# показана маска:
maskedTextBox1.Mask = "99/99/9999";
В следующем коде Visual Basic показана маска:
MaskedTextBox1.Mask = "99/99/9999"
Эта маска может требовать, чтобы пользователь ввел восемь цифр, но не может убедиться, что пользователь вводит значения месяца, даты и года в правильном диапазоне; "12.20.2003" и "70/90/0000" являются равными допустимыми в отношении маски.
Вы можете использовать ValidatingType для проверки того, попадают ли данные, введенные пользователем, в правильном диапазоне , в предыдущем случае, назначив его экземпляр DateTime типа. Текущий текст элемента управления будет проверен либо при выходе пользователя из элемента управления. Вы можете определить, завершается ли проверка данных сбоем TypeValidationCompleted , отслеживая событие.
MaskedTextBoxбудет выполнять ValidatingType проверку только в том MaskCompletedслучаеtrue.
Если вы хотите использовать собственные пользовательские типы ValidatingTypeданных, необходимо реализовать статический Parse метод, который принимает строку в качестве параметра. Этот метод должен быть реализован с помощью одной или обоих следующих сигнатур:
public static Object Parse(string)
public static Object Parse(string, IFormatProvider)