MaskedTextBox.ValidatingType Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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)