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