VB.Net - TextBox, csak a számok használatát teszi lehetővé
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