VB.Net - TextBox, tillåter endast användning av nummer

Två exempel för att begränsa användningen av siffror endast i en textruta, med hänsyn tagen till decimalseparatorn på värddatorn.

Exempel 1

Det mest "enkla" sättet att begränsa inmatningen av data presenteras nedan.

  • Öppna ett nytt Windows Forms-projekt
  • På formuläret klistra in:
    • En textruta
    • En etikett
    • En knapp

Och klistra in den här koden i ...

 Public Class Form1 Dim Sep Som Char Dim Nombre Som Double Private Sub Button1_Click (ByVal-avsändare Som System.Object, ByVal e As System.EventArgs) Hanterar Button1.Click Nombre = CDbl (TextBox1.Text) Label1.Text = Nombre End Sub Private Sub Form1_Load (ByVal avsändare Som System.Object, ByVal e As System.EventArgs) hanterar MyBase.Load 'Détecter le séparateur décimale de l'application. Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator TextBox1.Focus () End Sub Private Sub TextBox1_KeyPress (ByVal avsändare Som Objekt, ByVal e Som System.Windows.Forms.KeyPressEventArgs) Hanterar TextBox1.KeyPress Om Inte (Char.IsNumber (e.KeyChar ) Eller e.KeyChar.Equals (Sep) eller Char.IsControl (e.KeyChar)) Då e.Handled = True End Sub End Class 

Exempel 2

Metoden som användes i exempel 1 saknar flexibilitet. Att använda decimalpunkten beror verkligen på värddatorns konfiguration.

Fördelen med den andra lösningen är att användaren kan skriva in en punkt eller ett komma och koden kommer att hantera ändringarna beroende på konfigurationen av datorn.

Lägg till en andra blankett med samma komponenter.

Klistra in koden i ...

 Public Class Form2 Dim Sep Som Char Dim Nombre Som Double Private Sub Button1_Click (ByVal avsändare Som System.Object, ByVal e As System.EventArgs) Hanterar Button1.Click Applique () End Sub Privat Sub Form1_Load (ByVal avsändare Som System.Object, ByVal e som System.EventArgs) hanterar MyBase.Load 'Upptäck decimalpunkten för programmet. Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator Slut Sub Privat Sub Data_KeyDown (ByVal-avsändare Som Objekt, ByVal e Som System.Windows.Forms.KeyEventArgs) Hanterar Data.KeyDown Om e.KeyCode = 13 Då Applique () Avsluta Om Slut Sub Privat Sub Data_TextChanged (ByVal avsändare Som System.Object, ByVal e As System.EventArgs) Hanterar Data.TextChanged Om Data.Text = Sep Then 'Om decimalpunkten skrivs är direkt. Data.Text = "0" & ​​Sep Data.SelectionStart = Len (Data.Text) ElseIf Not IsNumeric (Trim (Data.Text)) Då Beep () Om Len (Data.Text) <1 Då Data.Text = "" Else Data.Text = Microsoft.VisualBasic.Left (Data.Text, Len (Data.Text) - 1) Data.SelectionStart = Len (Data.Text) Avsluta om slutet om End Sub Sub Applique () Dim DT som String 'Change det är kompatibelt med värddatorns konfiguration. DT = Ersätt (Data.Text, "., Sep) DT = Ersätt (DT, ", "Sep) Etikett1.Text = CDbl (DT) På Fel Fortsätt Nästa Data.SelectionStart = 0 Data.SelectionLength = Len .Text) Data.Focus () End Sub End Class 

Ladda ner

  • Hämta exempel här

Tidigare Artikel Nästa Artikel

Bästa Tipsen