TEXTBOX ACEITA APENAS NUMEROS E VIRGULA
Boa tarde.
Estou com um problema na minha aplicação e acho que encontrei a solução aqui no fórum, postado pelo colega Flavio Santos, mas não consegui colocar em prática. Estou usando o VS2010, é uma aplicação Windows, Visual Basic. Colei o código conforme abaixo, mas aparece erros no código, aguns trechos ficam sublinhados. O código abaixo não é VB? Estou fazendo algo errado?
Public Class Form1
código do colega
End Class
__________________________________________________________________________________________________________________________
FGSANTOS
[Expert]
Se digitar ponto vira virgula, se o txt estiver vazio e digitar virgula coloca um 0,
Function ObrigaDecimal(cControl As Control, KeyAscii As Integer)
If KeyAscii = 8 Then Exit Function
If KeyAscii = 13 Then Exit Function
If KeyAscii = 22 Then Exit Function
If KeyAscii = 46 Then KeyAscii = 44
If KeyAscii = 44 Then
If InStr(cControl, , ) >= 0 Then
If cControl = 0 And KeyAscii = 44 Then cControl.SelLength = Len(cControl.Text)
If cControl = ,0 Then cControl = 0,
If cControl = Then
cControl = 0,
cControl.SelStart = Len(cControl)
KeyAscii = 0
ElseIf cControl.SelLength = Len(cControl.Text) Then
cControl = 0,
cControl.SelStart = Len(cControl)
KeyAscii = 0
Else
If InStr(cControl, , ) >= 1 Then KeyAscii = 0
ObrigaDecimal = KeyAscii
End If
Exit Function
End If
ObrigaDecimal = KeyAscii
Exit Function
End If
If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0
End Function
Function ObrigaNumero(KeyAscii As Integer, Optional Barra As Boolean)
If KeyAscii = 8 Then Exit Function
If KeyAscii = 13 Then Exit Function
If KeyAscii = 22 Then Exit Function
If Barra = True Then
If Chr(KeyAscii) = / Then Exit Function
End If
If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0
End Function
Estou com um problema na minha aplicação e acho que encontrei a solução aqui no fórum, postado pelo colega Flavio Santos, mas não consegui colocar em prática. Estou usando o VS2010, é uma aplicação Windows, Visual Basic. Colei o código conforme abaixo, mas aparece erros no código, aguns trechos ficam sublinhados. O código abaixo não é VB? Estou fazendo algo errado?
Public Class Form1
código do colega
End Class
__________________________________________________________________________________________________________________________
FGSANTOS
[Expert]
Se digitar ponto vira virgula, se o txt estiver vazio e digitar virgula coloca um 0,
Function ObrigaDecimal(cControl As Control, KeyAscii As Integer)
If KeyAscii = 8 Then Exit Function
If KeyAscii = 13 Then Exit Function
If KeyAscii = 22 Then Exit Function
If KeyAscii = 46 Then KeyAscii = 44
If KeyAscii = 44 Then
If InStr(cControl, , ) >= 0 Then
If cControl = 0 And KeyAscii = 44 Then cControl.SelLength = Len(cControl.Text)
If cControl = ,0 Then cControl = 0,
If cControl = Then
cControl = 0,
cControl.SelStart = Len(cControl)
KeyAscii = 0
ElseIf cControl.SelLength = Len(cControl.Text) Then
cControl = 0,
cControl.SelStart = Len(cControl)
KeyAscii = 0
Else
If InStr(cControl, , ) >= 1 Then KeyAscii = 0
ObrigaDecimal = KeyAscii
End If
Exit Function
End If
ObrigaDecimal = KeyAscii
Exit Function
End If
If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0
End Function
Function ObrigaNumero(KeyAscii As Integer, Optional Barra As Boolean)
If KeyAscii = 8 Then Exit Function
If KeyAscii = 13 Then Exit Function
If KeyAscii = 22 Then Exit Function
If Barra = True Then
If Chr(KeyAscii) = / Then Exit Function
End If
If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0
End Function
Coloca assim no KeyPress da TextBox
Esse código para vb.net, é bastante parecido com o que vc postou
If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = [Ô],[Ô] Then e.Handled = True
If e.KeyChar = [Ô],[Ô] And (InStr(Text1.Text, [Ô],[Ô])) > 0 Then e.Handled = True
Esse código para vb.net, é bastante parecido com o que vc postou
Bom acredito que o erro é o seguinte, o código é para vb6 vc esta usando o vb.net(vs2010)
Para seu caso o código que talvez funcione é este
Lembre-se uma vez que você está utilizando vs2010, então suas postagens devem ser no forum vb.net.
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim allowedChars As String = [Ô]0123456789,[Ô]
If allowedChars.IndexOf(e.KeyChar) = -1 Then
e.Handled = True
End If
End Sub
Lembre-se uma vez que você está utilizando vs2010, então suas postagens devem ser no forum vb.net.
Opa,
Marcelo,
To confusão bixo. Tipo to usando o VS2010. Escolhi Visual Basic, Aplication For Windows.
Pergunta: Estou usando VB ou .NET?
Eu te confesso que sou cabaço em programação, sou administrador e faço pequenas aplicações para me auxiliar. Comecei no Excel no VBA e passei a fazer no VS2010. Sinceramente não conheço perfeitamente a linguagem, mas tenho pego dicas aqui como VB e usado na aplicação que estou desenvolvendo, como peguei um código ontem que permite apenas numeros e não letras, peguei em um fórum de VB.
Se a linguagem que estou aprendendo é VB.Net vou direcionar o meu aprendizado e fazer as postagens nos locais corretos. Acredito que há semelhança entre as duas linguagens que deve ter feito com que eu me confundisse. Desde já agradeço a ajuda. Vou testar a sugestão do colega pq preciso que aceite a , também para digitar o valor com os centavos. Abaixo o código que encontrei que permite apenas números, caso alguem se interesse.
Private Sub Textbox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Texbox1.KeyPress
If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then
e.Handled = True
End If
End Sub
Marcelo,
To confusão bixo. Tipo to usando o VS2010. Escolhi Visual Basic, Aplication For Windows.
Pergunta: Estou usando VB ou .NET?
Eu te confesso que sou cabaço em programação, sou administrador e faço pequenas aplicações para me auxiliar. Comecei no Excel no VBA e passei a fazer no VS2010. Sinceramente não conheço perfeitamente a linguagem, mas tenho pego dicas aqui como VB e usado na aplicação que estou desenvolvendo, como peguei um código ontem que permite apenas numeros e não letras, peguei em um fórum de VB.
Se a linguagem que estou aprendendo é VB.Net vou direcionar o meu aprendizado e fazer as postagens nos locais corretos. Acredito que há semelhança entre as duas linguagens que deve ter feito com que eu me confundisse. Desde já agradeço a ajuda. Vou testar a sugestão do colega pq preciso que aceite a , também para digitar o valor com os centavos. Abaixo o código que encontrei que permite apenas números, caso alguem se interesse.
Private Sub Textbox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Texbox1.KeyPress
If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then
e.Handled = True
End If
End Sub
Rogério a partir do vs2005 é vb.net
teste o código que postei é para .net
teste o código que postei é para .net
Deu certo!
Muito obrigado, passarei a postar nos locai corretos a partir de agora. Testei o código que o Roberto postou e também deu certo. Muito obrigado!
Muito obrigado, passarei a postar nos locai corretos a partir de agora. Testei o código que o Roberto postou e também deu certo. Muito obrigado!
Tópico encerrado , respostas não são mais permitidas