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


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)

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

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