¿Te gustaría aprender .NET?
Tenemos los cursos que necesitas.¡Haz clic aquí!

 

En este artículo veremos dos ejemplos para limitar la entrada de un TextBox sólo a números, teniendo en cuenta el separador decimal del PC huésped.

Ejemplo 1

La manera más simple para limitar la entrada en un textbox la veremos a continuación:

  • Abre un nuevo proyecto Windows Forms
  • En el formulario agrega:
    • Un textbox
    • Una etiqueta
    • Un botón

Luego pega este condigo:

Public Class Form1 Dim Sep As Char Dim Número As Double Private Sub Button1_Click(ByVal sender
 As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Número = CDbl(TextBox1.
Text) Etiqueta1.Text = Número End Sub Private Sub Form1_Load(ByVal sender As System.Object, 
ByVal e As System.EventArgs) Handles MyBase.Load 'Detectar el separador decimal de la 
aplicación. Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator 
TextBox1.Focus() End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As 
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If Not 
(Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) 
Then e.Handled = True End Sub End Class

Ejemplo 2

Sin embargo, la solución 1 no es la más comoda para el usuario.
Efectivamente, el separador decimal está condicionado a la configuración del PC huésped, esto podría ocasionar, por ejemplo, tener que teclear la coma del teclado alfanumérico si la aplicación no ha cambiado el punto del teclado decimal a coma (si es necesario una coma).
La ventaja de esta segunda solución es que el usuario puede teclear a su elección, un punto o una coma, el código lo corrige en función del PC.

  • Agrega un segundo formulario con los mismos componentes
  • Pega este código:

 

Public Class Form2 Dim Sep As Char Dim Nombre As Double Private Sub Button1_Click(ByVal sender
 As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Applique() End Sub 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
 MyBase.Load 'Detectar el separador decimal de la aplicación. Sep = Application.CurrentCulture.
NumberFormat.NumberDecimalSeparator End Sub Private Sub Data_KeyDown(ByVal sender As Object, 
ByVal e As System.Windows.Forms.KeyEventArgs) Handles Data.KeyDown If e.KeyCode = 13 Then 
Aplica() End If End Sub Private Sub Data_TextChanged(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles Data.TextChanged If Data.Text = Sep Then 'si el separador decimal
 es tecleado directamente Data.Text = "0" & Sep Data.SelectionStart = Len(Data.Text) ElseIf 
Not IsNumeric(Trim(Data.Text)) Then Beep() If Len(Data.Text) < 1 Then Data.Text = "" Else Data.
Text = Microsoft.VisualBasic.Left(Data.Text, Len(Data.Text) - 1) Data.SelectionStart = 
Len(Data.Text) End If End If End Sub Sub Aplica() Dim DT As String 'Para adaptar a la 
configuracion del PC huesped. DT = Replace(Data.Text, ".", Sep) DT = Replace(DT, ",", Sep)
 Label1.Text = CDbl(DT) On Error Resume Next Data.SelectionStart = 0 Data.SelectionLength =
 Len(Data.Text) Data.Focus() End Sub End Class

Te esperamos en la segunda parte del artículo en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría aprender .NET?
Tenemos los cursos que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax
()
x
Abrir chat
¿Quieres aprender a programar?
Hola 👋,
¿Te interesa información de nuestros cursos?