VB.Net - TextBox, membenarkan penggunaan nombor sahaja

Dua contoh untuk mengehadkan penggunaan nombor hanya dalam kotak teks, dengan mengambil kira seperator perpuluhan komputer tuan rumah.

Contoh 1

Cara yang paling "mudah" untuk menghadkan kemasukan data dipaparkan di bawah.

  • Buka projek Windows Forms baru
  • Dalam bentuk, tampal:
    • Kotak teks
    • Label
    • Butang

Dan tampal kod ini ke ...

 Kelas Awam Form1 Dim Sep As Char Dim Nombre Sebagai Double Private Sub Button1_Click (Pengirim ByVal Sebagai System.Object, ByVal e As System.EventArgs) Mengendalikan Button1.Click Nombre = CDbl (TextBox1.Text) Label1.Text = Nombre End Sub Private Sub Form1_Load (Pengirim ByVal Sebagai System.Object, ByVal e As System.EventArgs) Mengendalikan MyBase.Load 'Détecter le séparateur décimale de l'application. Sep = Aplikasi.CurrentCulture.NumberFormat.NumberDecimalSeparator TextBox1.Focus () Akhir Sub Sub Private Sub TextBox1_KeyPress (Pengirim ByVal Sebagai Objek, ByVal e Sebagai System.Windows.Forms.KeyPressEventArgs) Mengendalikan TextBox1.KeyPress Jika Tidak (Char.IsNumber (e.KeyChar ) Atau e.KeyChar.Equals (Sep) Atau Char.IsControl (e.KeyChar)) Kemudian e.Handled = Kelas Akhir Sub Akhir 

Contoh 2

Kaedah yang digunakan dalam Contoh 1 tidak mempunyai fleksibiliti. Sesungguhnya, penggunaan titik perpuluhan bergantung kepada konfigurasi PC tuan rumah.

Kelebihan penyelesaian kedua ini ialah pengguna boleh menaip titik atau koma dan kod itu akan mengendalikan perubahan bergantung pada konfigurasi PC.

Tambah borang kedua dengan komponen yang sama.

Tampal kod ke ...

 Kelas Awam Form2 Dim Dim As Char Dim Nombre Sebagai Double Private Sub Button1_Click (Pengirim ByVal Sebagai System.Object, ByVal e As System.EventArgs) Mengendalikan Button1.Click Applique () Sub Akhir Sub Private Sub Form1_Load (Pengirim ByVal Sebagai System.Object, ByVal e Sebagai System.EventArgs) Mengendalikan MyBase.Load 'Mengesan titik perpuluhan aplikasi. Sep = Aplikasi.CurrentCulture.NumberFormat.NumberDecimalSeparator Sub Akhir Sub Swasta Data_KeyDown (Pengirim ByVal Sebagai Objek, ByVal e Sebagai System.Windows.Forms.KeyEventArgs) Mengendalikan Data.KeyDown Jika e.KeyCode = 13 Kemudian Pukulan () Akhir Jika Akhir Sub Persendirian Sub Data_TextChanged (Pengirim ByVal Sebagai System.Object, ByVal e As System.EventArgs) Mengendalikan Data.TextChanged Jika Data.Text = Sep Kemudian 'Jika titik perpuluhan ditaip secara langsung. Data.Text = "0" & ​​Sep Data.SelectionStart = Len (Data.Text) ElseIf Tidak IsNumeric (Trim (Data.Text)) Kemudian Beep () Jika Len (Data.Text) <1 Then Data.Text = Else Data.Text = Microsoft.VisualBasic.Left (Data.Text, Len (Data.Text) - 1) Data.SelectionStart = Len (Data.Text) End If End If End Sub Sub Applique () Dim DT As String 'Change ia bersesuaian dengan konfigurasi PC hos. DT = Ganti (Data.Text, ".", Sep) DT = Ganti (DT, ", " Sep Sepenuhnya) Label1.Text = CDbl (DT) Atas Kesalahan Resume Next.SelectectionStart = 0 Data.SelectionLength = .Teks) Data.Focus () Akhir Sub Akhir Kelas 

Muat turun

  • Muat turun contoh di sini

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama