Bagikan melalui


MaskedTextBox.ValidatingType Properti

Definisi

Mendapatkan atau mengatur jenis data yang digunakan untuk memverifikasi input data oleh pengguna.

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

Nilai Properti

yang Type mewakili jenis data yang digunakan dalam validasi. Default adalah null.

Atribut

Contoh

Contoh kode berikut mencoba mengurai input pengguna sebagai valid DateTime. Jika gagal, penanganan TypeValidationCompleted aktivitas menampilkan pesan kesalahan kepada pengguna. Jika nilainya valid DateTime, kode melakukan pemeriksaan tambahan untuk memastikan bahwa tanggal yang diberikan bukan sebelum tanggal hari ini. Contoh kode ini mengharuskan proyek Formulir Windows Anda berisi MaskedTextBox kontrol bernama MaskedTextBox1 dan ToolTip kontrol bernama 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

Keterangan

Masker tidak dalam dirinya sendiri menjamin bahwa input pengguna akan mewakili nilai yang valid untuk jenis tertentu. Kode C# berikut menunjukkan masker:

maskedTextBox1.Mask = "99/99/9999";  

Kode Visual Basic berikut ini memperlihatkan masker:

MaskedTextBox1.Mask = "99/99/9999"

Masker ini dapat menuntut pengguna memasukkan delapan digit, tetapi tidak dapat memverifikasi bahwa pengguna memasukkan nilai bulan, tanggal, dan tahun dalam rentang yang benar; "20/12/2003" dan "90/70/0000" sama-sama berlaku sejauh yang bersangkutan.

Anda dapat menggunakan ValidatingType untuk memverifikasi apakah data yang dimasukkan oleh pengguna berada dalam rentang yang benar - dalam kasus yang disebutkan sebelumnya, dengan menetapkan instans jenis DateTime . Teks saat ini dalam kontrol akan divalidasi baik ketika pengguna meninggalkan kontrol. Anda dapat menentukan apakah data gagal validasi dengan memantau TypeValidationCompleted peristiwa atau tidak. MaskedTextBox hanya akan melakukan pemeriksaan terhadap ValidatingType jika MaskCompleted adalah true.

Jika Anda ingin menggunakan jenis data kustom Anda sendiri dengan ValidatingType, Anda harus menerapkan metode statis Parse yang mengambil string sebagai parameter. Metode ini harus diimplementasikan dengan salah satu atau kedua tanda tangan berikut:

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

Berlaku untuk

Lihat juga