VB.Net - TextBox, dovolite uporabo samo številk

Dva primera za omejitev uporabe številk samo v polju z besedilom, ob upoštevanju decimalnega ločila gostiteljskega računalnika.

Primer 1

V nadaljevanju je predstavljen najbolj "preprost" način za omejitev vnosa podatkov.

  • Odprite nov projekt Windows Forms
  • Na obrazcu prilepite:
    • Okno z besedilom
    • Nalepka
    • Gumb

In prilepite to kodo v ...

 Javni razred Form1 Dim Sep Kot Char Dim Nombre kot dvojno zasebno Sub Button1_Click (ByVal pošiljatelj kot System.Object, ByVal e As System.EventArgs) Ročaji Button1.Click Nombre = CDbl (TextBox1.Text) Label1.Text = Sub Sub Sub Sub Form1_Load (ByVal pošiljatelj kot System.Object, ByVal e As System.EventArgs) Ročaja 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 (pošiljatelj ByVal kot objekt, ByVal e kot System.Windows.Forms.KeyPressEventArgs) Roča TextBox1.KeyPress Če ne (Char.IsNumber (e.KeyChar) ) Ali e.KeyChar.Equals (Sep) Ali Char.IsControl (e.KeyChar)) Potem e.Handled = True End Sub End Class 

Primer 2

Metoda, uporabljena v Primeru 1, ni fleksibilna. Dejansko je uporaba decimalne vejice odvisna od konfiguracije gostiteljskega računalnika.

Prednost te druge rešitve je, da lahko uporabnik vnese točko ali vejico, koda pa bo spreminjala spremembe glede na konfiguracijo računalnika.

Dodajte drugo obliko z istimi komponentami.

Prilepite kodo v ...

 Javni razred Form2 Dim Sep Kot Char Dim Nombre kot dvojno zasebno Sub Button1_Click (ByVal pošiljatelj kot System.Object, ByVal e kot System.EventArgs) Ročaji Button1.Click Applique () End Sub Private Sub Form1_Load (ByVal sender As System.Object, ByVal sender e Kot System.EventArgs) Ročaji MyBase.Load 'Zaznavanje decimalne točke aplikacije. Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator End Sub Private Sub Data_KeyDown (ByVal pošiljatelj kot objekt, ByVal e kot System.Windows.Forms.KeyEventArgs) Roča Data.KeyDown Če e.KeyCode = 13 Potem Applique () End, če End Sub Private Pod Data_TextChanged (ByVal pošiljatelj kot System.Object, ByVal e kot System.EventArgs) Roča Data.TextChanged Če Data.Text = Sep Potem 'Če je decimalna vejica natipkana je neposredno. Data.Text = "0" & ​​Sep Data.SelectionStart = Len (Data.Text) ElseIf Not IsNumeric (Trim (Data.Text)) Potem Beep () Če Len (Data.Text) <1 Potem Data.Text = "" Else Data.Text = Microsoft.VisualBasic.Left (Data.Text, Len (Data.Text) - 1) Data.SelectionStart = Len (Data.Text) End Če End Če End Sub Sublique () Dim DT kot String 'Spremeni je združljiv s konfiguracijo gostiteljskega računalnika. DT = Zamenjaj (Data.Text, ".", Sep) DT = Zamenjaj (DT, ", ", sep) Label1.Text = CDbl (DT) ob napaki Nadaljuj Naprej Data.SelectionStart = 0 Data.SelectionLength = Len (Podatki .Text) Data.Focus () End End End Class 

Prenesi

  • Prenesite primer tukaj

Prejšnji Članek Naslednji Članek

Top Nasveti