VB.Net - TextBox, sallii numeroiden käytön

Kaksi esimerkkiä, jotka rajoittavat numeroiden käyttöä vain tekstilaatikossa, ottaen huomioon isäntäkoneen desimaalierotin.

Esimerkki 1

Jäljempänä esitetään "yksinkertaisin" tapa rajoittaa tietojen syöttämistä.

  • Avaa uusi Windows Forms -projekti
  • Lomakkeessa liitä:
    • Tekstilaatikko
    • Tarra
    • Nappi

Ja liitä tämä koodi ...

 Julkisen luokan muoto1 Dim Sep kuten Char Dim Nombre kuin kaksinkertainen yksityinen Sub Button1_Click (ByVal-lähettäjä kuten System.Object, ByVal e System.EventArgs) Käsittelee Button1.Click Nombre = CDbl (TextBox1.Text) Label1.Text = Nombre End Sub Private Sub Form1_Load (ByVal-lähettäjä kuten System.Object, ByVal e As System.EventArgs) Käsittelee MyBase.Load 'Détecter le séparateur décimale de l'application -ohjelmaa. Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator TextBox1.Focus () End Sub Yksityinen Sub TextBox1_KeyPress (ByVal-lähettäjä objektina, ByVal e System.Windows.Forms.KeyPressEventArgs) Käsittelee TextBox1.KeyPress Jos ei (Char.IsNumber (e.KeyChar) ) Tai e.KeyChar.Equals (syyskuu) tai Char.IsControl (e.KeyChar)) Sitten e.Handled = True End -alaluokka 

Esimerkki 2

Esimerkissä 1 käytetyllä menetelmällä ei ole joustavuutta. Itse asiassa desimaalipisteen käyttö riippuu isäntäkoneen kokoonpanosta.

Tämän toisen ratkaisun etuna on, että käyttäjä voi kirjoittaa pisteen tai pilkun ja koodi käsittelee muutokset PC: n kokoonpanon mukaan.

Lisää toinen lomake samoilla komponenteilla.

Liitä koodi ...

 Julkisen luokan muoto2 Dim Sep kuten Char Dim Nombre kuin Double Private Sub Button1_Click (ByVal-lähettäjä System.Object, ByVal e System.EventArgs) Käsittelee Button1.Click Apply () End Sub Private Sub Form1_Load (ByVal-lähettäjä System.Object, ByVal e Kuten System.EventArgs) Käsittelee MyBase.Load 'Tunnista sovelluksen desimaalipiste. Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator End Sub Yksityinen Sub Data_KeyDown (ByVal-lähettäjä objektina, ByVal e System.Windows.Forms.KeyEventArgs) Käsittelee Data.KeyDown Jos e.KeyCode = 13 Sitten Applique () päättyy, jos lopetat yksityisen Sub Data_TextChanged (ByVal-lähettäjä Kuten System.Object, ByVal e System.EventArgs) Käsittelee Data.TextChanged Jos Data.Text = Sep sitten 'Jos desimaalipiste on kirjoitettu, se on suoraan. Data.Text = "0" & ​​Sep Data.SelectionStart = Len (Data.Text) ElseIf ei IsNumeric (Trim (Data.Text)) Sitten Beep () Jos Len (Data.Text) <1 Sitten Data.Text = "" Else Data.Text = Microsoft.VisualBasic.Left (Data.Text, Len (Data.Text) - 1) Data.SelectionStart = Len (Data.Text) Loppu, jos lopetat Jos lopetat Sub Sub Applique () Dim DT: n merkkijonon muutoksena se on yhteensopiva isäntätietokoneen kokoonpanon kanssa. DT = Korvaa (Data.Text, ".", Sep) DT = Korvaa (DT, ", ", Syyskuu) Label1.Text = CDbl (DT) On Error Jatka Seuraava Data.SelectionStart = 0 Data.SelectionLength = Len (Data .Text) Data.Focus () End Sub End Class 

ladata

  • Lataa esimerkki tästä

Edellinen Artikkeli Seuraava Artikkeli

Top Vinkkejä