Posting ini merupakan gabungan source code pada posting-an saya sebelumnya yakni Membatasi Textbox agar bisa diInput Angka saja dengan VB.NET, Mengubah Huruf Koma dan Titik menjadi Huruf Pemisah Desimal dengan VB.NET dan Membatasi Huruf diInput 2 kali atau lebih pada Textbox dengan VB.NET. Dengan 3 dasar tersebut, kita dapat membuat validasi pada textbox agar bisa diinput angka desimal saja (angka yang memiliki komponen desimal / pecahan). Agar tampilan-nya bagus, set property TextAlign pada textbox menjadi Right atau set programmatically dengan perintah sebagai berikut :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.TextBox1.TextAlign = HorizontalAlignment.Right End Sub
Oke tanpa basa basi lagi, berikut adalah source codenya lengkap dengan komentar-komentar agar mudah dipelajari.
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress 'JIKA YG DITEKAN TOMBOL ANGKA, BACKSPACE, PEMISAH RIBUAN ATAU PEMISAH DESIMAL If IsNumeric(e.KeyChar) = True OrElse _ e.KeyChar = vbBack OrElse _ e.KeyChar = System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator OrElse _ e.KeyChar = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator Then 'JIKA TEXTBOX SUDAH MEMILIKI HURUF PEMISAH DESIMAL If Me.TextBox1.Text.Contains(System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) = True Then 'JIKA YG DITEKAN ADALAH HURUF PEMISAH RIBUAN ATAU DESIMAL If e.KeyChar = System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator OrElse _ e.KeyChar = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator Then e.Handled = True 'STOP INPUT Else e.Handled = False 'LANJUTKAN INPUT End If Else 'JIKA BELUM MEMILIKI HURUF PEMISAH DESIMAL 'JIKA YG DITEKAN ADALAH HURUF PEMISAH RIBUAN ATAU DESIMAL If e.KeyChar = System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator OrElse _ e.KeyChar = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator Then 'JIKA TEXTBOX MASIH KOSONG If Me.TextBox1.Text = String.Empty Then 'TAMBAHKAN O (NOL) DIDEPAN HURUF PEMISAH DESIMAL Me.TextBox1.Text = "0"c & CChar(System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) 'STOP INPUT e.Handled = True 'PINDAHKAN CURSOR DITEXTBOX KE BELAKANG TEXT Me.TextBox1.Select(Me.TextBox1.Text.Length, 0) Else 'UBAH HURUF TERSEBUT MENJADI HURUF PEMISAH DESIMAL e.KeyChar = CChar(System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) End If End If End If Else 'JIKA BUKAN TOMBOL ANGKA, BACKSPACE, PEMISAH RIBUAN ATAU PEMISAH DESIMAL YG DITEKAN e.Handled = True 'STOP INPUT End If End Sub
Kekurangan dari source code diatas adalah belum bisa menginput huruf minus (-). Tunggu postingan saya selanjutnya untuk memperbaiki kekurangan tersebut. ^_^
Terima kasih
BalasHapus