Autor Tema: Solo Números en un TextBox (Vb .Net)  (Leído 4884 veces)

0 Usuarios y 1 Visitante están viendo este tema.

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Solo Números en un TextBox (Vb .Net)
« 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
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

softmania

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +4/-0
    • Ver Perfil
Re:Solo Números en un TextBox (Vb .Net)
« Respuesta #1 en: Marzo 16, 2014, 09:42:31 pm »
Citar
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

Código: (VB) [Seleccionar]
Enum TipoNumeros
        DECIMALES
        ENTEROS
    End Enum

Código: (VB) [Seleccionar]
  ''' <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
Solo se que no se nada!!! ;) By Sócrates