Visual Basic Foro
Programación => Visual Basic .NET / C# => Mensaje iniciado por: ADONAIRAFA en Junio 04, 2011, 08:50:43 pm
-
Saludos a todos !!!
Aquí un pequeño aporte, se trata de un solo aceptar caracteres numéricos en un TextBox (la mayoría lo deben de conocer del VB 6.0) pero ahora en VB 9.0 (VB 2008).
Este era el código en VB 6.0:
'// Esta subrutina se encargar de impedir la escritura de caracteres que no sean _
estrictamente numéricos...
Public Sub OnlyNumbers(Code As Integer)
Select Case Chr(Code)
Case "0" To "9"
Case Chr(8)
Case Chr(44)
Code = 0
Case Else
Code = 0
End Select
End Sub
______________________________________________________________________________________
Ahora este es el código en VB .Net (yo uso VB 2008 pero es válido en VB .Net y VB 2005):
Option Explicit On
Option Strict On
'//
Module Module1
Public Function OnlyNumbers(ByVal txtTBox As TextBox, ByVal Character As Char, ByVal bDecimal As Boolean) As Boolean
If (Char.IsNumber(Character, 0) = True) Or Character = Convert.ToChar(8) _
Or Character = "." Then
If Character = "." Then
If bDecimal = True Then
If txtTBox.Text.IndexOf(".") <> -1 Then Return True
Else : Return True
End If
End If
Return False
Else
Return True
End If
End Function
End Module
Option Explicit On
Option Strict On
'//
Public Class Form1
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
'//
e.Handled = OnlyNumbers(txtSnAdministrator0, e.KeyChar, True)
'//
End Sub
End Class
Cuando llamamos a la función, si pasamos el parámetro bDecimal (tipo booleano) como True, permitirá además de los caracteres numéricos, escribir el punto (".") decimal. con False, los caracteres serán exclusivamente numéricos.
Espero les pueda servir de algo, estas recopilaciones que he podido hacer mis "largas navegaciones por la web" !!!
Saludos !!!
Manuel F. Borrego S.
Barcelona, Edo. Anzoátegui. Venezuela
-
La intención no es revivir el post haciendo spam, simplemente que considero que el foro es casi un manual para muchos miembros, por lo que no quería dejar dos post con soluciones a problemas similares
Enum TipoNumeros
DECIMALES
ENTEROS
End Enum
''' <summary>
''' By Softmania -
''' Permite ingresar Solo Numeros.
''' Estos puenden ser del tipo entero o decimal.
''' (Colocar en el evento KeyPress del control)
''' </summary>
''' <param name="bAcepta_Signos">Permite establecer si se acepta el ingreso de signos</param>
''' <param name="e">Instancia del evento</param>
''' <param name="TipoNumero">Tipo de numeros, decimales o enteros</param>
''' <remarks></remarks>
Public Sub Solo_Numeros(ByVal bAcepta_Signos As Boolean, ByVal e As System.Windows.Forms.KeyPressEventArgs, ByVal TipoNumero As TipoNumeros)
Dim sCadena As String
'By Softmania
If bAcepta_Signos = True Then
sCadena = "0123456789,-+"
Else
sCadena = "0123456789,"
End If
Select Case TipoNumero
Case TipoNumeros.DECIMALES
If InStr(1, sCadena & Chr(8), e.KeyChar) = 0 Then
'cambiamos el punto por la coma ...
If e.KeyChar = "." Then
e.KeyChar = ","
Else
e.KeyChar = ""
End If
End If
Case TipoNumeros.ENTEROS
If InStr(1, sCadena & Chr(8), e.KeyChar) = 0 Then
e.KeyChar = ""
End If
End Select
End Sub
Salu2 Colegas