Поделиться через


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равно , происходит следующая серия событий:

  1. Последовательность проверки начинается при выполнении одного из следующих действий:

    • MaskedTextBox управление теряет фокус.

    • Свойство Text извлекается.

    • вызывается метод ValidateText .

  2. Любое из этих событий приводит к вызову Parse метода типа, указанного свойством ValidatingType . Parse отвечает за преобразование форматируемой входной строки в целевой тип. Успешное преобразование приравнивается к успешной проверке.

  3. После Parse возврата TypeValidationCompleted возникает событие . Обработчик событий для этого события чаще всего реализуется для выполнения проверки типа или маски. Он получает параметр, TypeValidationEventArgs содержащий сведения о преобразовании. Например, элемент указывает, IsValidInput успешно ли выполнено преобразование.

  4. После возврата обработчика событий для TypeValidationCompleted события возникает стандартное событие Validatingпроверки , . Обработчик можно реализовать для выполнения стандартной проверки, включая отмену события.

  5. Если событие не отменено на шаге 3, возникает стандартное событие Validated проверки элемента управления.

Если свойству Cancel задано значение true в обработчике TypeValidationCompleted событий, событие будет отменено, а MaskedTextBox элемент управления сохранит фокус, если последующее Validating событие не установит свою версию CancelEventArgs.Cancel свойства обратно в falseзначение .

Применяется к

См. также раздел