TEXTBOX CONDICAO PARA USAR CARACTERES
Olá, sou novo no fórum, se cometi algum erro, me avisem.
Bom, to criando um programa com o visual basic, uma especie de calculadora onde o usuário digita apenas números nos textboxs criados, eu filtrei ele para apenas aceitar números, backspack e virgula, o código posto logo abaixo, caso for preciso, eu queria saber se tem possibilidade de [Ô]filtrar[Ô] a virgula para apenas ser possÃvel digitar uma vez, e caso possÃvel também, para dar apenas pra colocar ela no segundo algarismo do textbox ou mais (porque não existe virgula no começo, né? ^^), ou ao menos se colocar a virgula no começo, ao clicar no botão, entra automaticamente um zero antes dela.
Bom, o código que uso é esse (módulo):
E nos textboxs:
Peguei eles em algum lugar que não me recordo e os modifiquei, tentei pesquisar de varias maneiras essa minha dúvida e não encontrei nada. Obrigado antecipadamente.
Bom, to criando um programa com o visual basic, uma especie de calculadora onde o usuário digita apenas números nos textboxs criados, eu filtrei ele para apenas aceitar números, backspack e virgula, o código posto logo abaixo, caso for preciso, eu queria saber se tem possibilidade de [Ô]filtrar[Ô] a virgula para apenas ser possÃvel digitar uma vez, e caso possÃvel também, para dar apenas pra colocar ela no segundo algarismo do textbox ou mais (porque não existe virgula no começo, né? ^^), ou ao menos se colocar a virgula no começo, ao clicar no botão, entra automaticamente um zero antes dela.
Bom, o código que uso é esse (módulo):
Module ValidaTextBox
Function SoNumeros(ByVal Keyascii As Short) As Short
If InStr([Ô]1234567890,[Ô], Chr(Keyascii)) = 0 Then
SoNumeros = 0
Else
SoNumeros = Keyascii
End If
Select Case Keyascii
Case 8
SoNumeros = Keyascii
End Select
End Function
End Module
E nos textboxs:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
KeyAscii = CShort(SoNumeros(KeyAscii))
If KeyAscii = 0 Then
e.Handled = True
End If
End Sub
Peguei eles em algum lugar que não me recordo e os modifiquei, tentei pesquisar de varias maneiras essa minha dúvida e não encontrei nada. Obrigado antecipadamente.
Public Function SoNumeros(ByRef Key As Short) As Short
Const Numeros As String = [Ô]012345,6789[Ô]
SoNumeros = Key
If Key <> 8 Then
If InStr(Numeros, Chr(Key)) = 0 Then
SoNumeros = 0
End If
End If
End Function
Dim sQtdeVirgulas As Object
Private Sub TXT_VLR_PREV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TXT_VLR_PREV.KeyPress
Dim KeyAscii As Short = Asc(e.KeyChar)
KeyAscii = SoNumeros(KeyAscii)
e.KeyChar = Chr(KeyAscii)
If KeyAscii = 0 Then
e.Handled = True
End If
sQtdeVirgulas = Split(TXT_VLR_PREV.Text, [Ô],[Ô])
If UBound(sQtdeVirgulas) = 1 Then
[ô]MsgBox(KeyAscii)
If KeyAscii = 44 Or KeyAscii = 46 Then
MsgBox([Ô]ERRO DE DIGITAÇÃO[Ô], MsgBoxStyle.Critical, [Ô]ERRO[Ô])
KeyAscii = 0
End If
End If
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 46 And KeyAscii <> 44 And KeyAscii <> 13 And KeyAscii <> 8 Then KeyAscii = 0
e.KeyChar = Chr(KeyAscii)
If KeyAscii = 0 Then
e.Handled = True
End If
End Sub
Const Numeros As String = [Ô]012345,6789[Ô]
SoNumeros = Key
If Key <> 8 Then
If InStr(Numeros, Chr(Key)) = 0 Then
SoNumeros = 0
End If
End If
End Function
Dim sQtdeVirgulas As Object
Private Sub TXT_VLR_PREV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TXT_VLR_PREV.KeyPress
Dim KeyAscii As Short = Asc(e.KeyChar)
KeyAscii = SoNumeros(KeyAscii)
e.KeyChar = Chr(KeyAscii)
If KeyAscii = 0 Then
e.Handled = True
End If
sQtdeVirgulas = Split(TXT_VLR_PREV.Text, [Ô],[Ô])
If UBound(sQtdeVirgulas) = 1 Then
[ô]MsgBox(KeyAscii)
If KeyAscii = 44 Or KeyAscii = 46 Then
MsgBox([Ô]ERRO DE DIGITAÇÃO[Ô], MsgBoxStyle.Critical, [Ô]ERRO[Ô])
KeyAscii = 0
End If
End If
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 46 And KeyAscii <> 44 And KeyAscii <> 13 And KeyAscii <> 8 Then KeyAscii = 0
e.KeyChar = Chr(KeyAscii)
If KeyAscii = 0 Then
e.Handled = True
End If
End Sub
Opa, esse código pegou direitinho, obrigado Nilson, e um feliz natal, estarei encerrando o tópico.
Tópico encerrado , respostas não são mais permitidas