TEXTBOX ACEITA APENAS NUMEROS E VIRGULA

ROGERIOAZEVEDO 21/03/2012 10:22:13
#397802
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
ROBIU 21/03/2012 10:52:00
#397808
Coloca assim no KeyPress da TextBox

   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
MARCELO.TREZE 21/03/2012 10:56:09
#397810
Resposta escolhida
Bom acredito que o erro é o seguinte, o código é para vb6 vc esta usando o vb.net(vs2010)

MARCELO.TREZE 21/03/2012 11:07:45
#397815
Para seu caso o código que talvez funcione é este

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.

ROGERIOAZEVEDO 21/03/2012 12:09:13
#397829
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.TREZE 21/03/2012 12:24:42
#397833
Rogério a partir do vs2005 é vb.net

teste o código que postei é para .net

ROGERIOAZEVEDO 21/03/2012 13:14:09
#397841
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!
Tópico encerrado , respostas não são mais permitidas