MaskedTextBox.TypeValidationCompleted Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит, когда элемент управления MaskedTextBox завершает синтаксический анализ текущего значения с использованием свойства ValidatingType.
public:
event System::Windows::Forms::TypeValidationEventHandler ^ TypeValidationCompleted;
public event System.Windows.Forms.TypeValidationEventHandler TypeValidationCompleted;
public event System.Windows.Forms.TypeValidationEventHandler? TypeValidationCompleted;
member this.TypeValidationCompleted : System.Windows.Forms.TypeValidationEventHandler
Public Custom Event TypeValidationCompleted As TypeValidationEventHandler
Тип события
Примеры
В следующем примере кода предпринимается попытка проанализировать входные данные пользователя в качестве допустимого 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
Комментарии
Элемент MaskedTextBox управления при необходимости проверяет введенные пользователем данные на соответствие типу, определенному его MaskedTextBox.ValidatingType свойством. Если это свойство не null
равно , происходит следующая серия событий:
Последовательность проверки начинается при выполнении одного из следующих действий:
MaskedTextBox управление теряет фокус.
Свойство Text извлекается.
вызывается метод ValidateText .
Любое из этих событий приводит к вызову
Parse
метода типа, указанного свойством ValidatingType .Parse
отвечает за преобразование форматируемой входной строки в целевой тип. Успешное преобразование приравнивается к успешной проверке.После
Parse
возврата TypeValidationCompleted возникает событие . Обработчик событий для этого события чаще всего реализуется для выполнения проверки типа или маски. Он получает параметр, TypeValidationEventArgs содержащий сведения о преобразовании. Например, элемент указывает, IsValidInput успешно ли выполнено преобразование.После возврата обработчика событий для TypeValidationCompleted события возникает стандартное событие Validatingпроверки , . Обработчик можно реализовать для выполнения стандартной проверки, включая отмену события.
Если событие не отменено на шаге 3, возникает стандартное событие Validated проверки элемента управления.
Если свойству Cancel задано значение true
в обработчике TypeValidationCompleted событий, событие будет отменено, а MaskedTextBox элемент управления сохранит фокус, если последующее Validating событие не установит свою версию CancelEventArgs.Cancel свойства обратно в false
значение .