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.