VB.Net - TextBox, csak a számok használatát teszi lehetővé

Két példa arra, hogy a számok használatát csak egy szövegmezőben korlátozzuk, figyelembe véve a gazdaszámítógép tizedesválasztóját.

1. példa

Az alábbiakban bemutatjuk az adatok belépésének korlátozását.

  • Nyisson meg egy új Windows Forms projektet
  • Az űrlapon illessze be:
    • Egy szövegdoboz
    • Címke
    • Egy gomb

És illessze be ezt a kódot ...

 Nyilvános osztály formája1 Dim Sep mint Char Dim Nombre mint kettős privát Sub Button1_Click (ByVal feladó mint System.Object, ByVal e mint System.EventArgs) Fogantyúk Button1.Click Nombre = CDbl (TextBox1.Text) Label1.Text = Nombre Vége Sub Private Sub Form1_Load (ByVal feladó, mint System.Object, ByVal e As System.EventArgs) Kezeli a MyBase.Load 'Détecter le séparateur décimale de l'application alkalmazást. Szeptember = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator TextBox1.Focus () Vége Sub Private Sub TextBox1_KeyPress (ByVal feladó Objektumként, ByVal e System.Windows.Forms.KeyPressEventArgs) Kezeli a TextBox1.KeyPresset Ha nem (Char.IsNumber (e.KeyChar) ) Vagy e.KeyChar.Equals (szeptember) vagy Char.IsControl (e.KeyChar)) Ezután e.Handled = True End alcsoport 

2. példa

Az 1. példában alkalmazott módszer hiányzik a rugalmasság. Valójában a tizedespont használata a fogadó PC konfigurációjától függ.

Ennek a második megoldásnak az az előnye, hogy a felhasználó egy pontot vagy vesszőt írhat be, és a kód a PC konfigurációjától függően kezeli a változásokat.

Adjon hozzá egy második formát ugyanazokkal az összetevőkkel.

Illessze be a kódot ...

 Nyilvános osztály Form2 Dim Sep mint Char Dim Nombre, mint Double Private Sub Button1_Click (ByVal feladó, mint System.Object, ByVal e As System.EventArgs) Fogantyúk Button1.Click Alkalmazás () Vége Sub Private Sub Form1_Load (ByVal feladó mint System.Object, ByVal e Mint System.EventArgs) Kezeli a MyBase.Load-ot 'Az alkalmazás tizedespontjának észlelése. Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator End Sub Private Sub Data_KeyDown (ByVal küldő objektumként, byVal e rendszerként.Windows.Forms.KeyEventArgs) Kezeli az Data.KeyDown-t Ha e.KeyCode = 13 Ezután az Apply () vége, ha befejezi a privátot Sub Data_TextChanged (ByVal sender mint System.Object, ByVal e System.EventArgs) Kezeli a Data.TextChanged Ha Data.Text = Sep majd 'Ha a tizedespontot gépeltük be közvetlenül. Data.Text = "0" & ​​Sep Data.SelectionStart = Len (Data.Text) ElseIf Not IsNumeric (Trim (Data.Text)), majd Beep () Ha Len (Data.Text) <1 Ezután Data.Text = "" Else Data.Text = Microsoft.VisualBasic.Left (Data.Text, Len (Data.Text) - 1) Data.SelectionStart = Len (Data.Text) Vége Ha vége Ha vége Sub Sub Applique () Dim DT mint String 'Change hogy kompatibilis legyen a gazdagép konfigurációjával. DT = Csere (Data.Text, ".", Sep) DT = Csere (DT, ", ", Szeptember) Label1.Text = CDbl (DT) On Error Folytatás Következő Data.SelectionStart = 0 Data.SelectionLength = Len (Adatok .Text) Data.Focus () végső végosztály 

Letöltés

  • Letöltés példa itt

Előző Cikk Következő Cikk

Top Tippek