TEXTBOX APENAS NUMEROS
Caros colegas, boa tarde!
Estou com o seguinte problema:
Estou tentando usar uma função para restringir nos textbox apenas números e também uso uma rotina para formatar o textbox para moeda.
Como uso a função para aceitar somente números, não consigo colocar virgula no estilo moeda e se não uso a função somente números estou sujeito a ter dor de cabeça no futuro.
Segue abaixo função e rotinas:
Gostaria a opinião de voces como devo resolver este problema ou então uma outra forma de usar estilo moeda.
#Region [Ô]SOMENTE NUMEROS[Ô]
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
Case 13
SoNumeros = Keyascii
Case 32
SoNumeros = Keyascii
End Select
End Function
#End Region
Private Sub txtOutros_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOutros.KeyPress
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
KeyAscii = CShort(SoNumeros(KeyAscii))
If KeyAscii = 0 Then
e.Handled = True
End If
End Sub
Private Sub txtOutros_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtOutros.Leave
If txtOutros.Text = String.Empty Then
txtOutros.Text = 0
Else
txtOutros.Text = FormatCurrency(txtOutros.Text, 2, TriState.True, TriState.True,
TriState.True).Replace([Ô]R$[Ô], [Ô][Ô]).Trim
End If
End Sub
Desde já agradeço pela atenção.
Abraços.
Estou com o seguinte problema:
Estou tentando usar uma função para restringir nos textbox apenas números e também uso uma rotina para formatar o textbox para moeda.
Como uso a função para aceitar somente números, não consigo colocar virgula no estilo moeda e se não uso a função somente números estou sujeito a ter dor de cabeça no futuro.
Segue abaixo função e rotinas:
Gostaria a opinião de voces como devo resolver este problema ou então uma outra forma de usar estilo moeda.
#Region [Ô]SOMENTE NUMEROS[Ô]
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
Case 13
SoNumeros = Keyascii
Case 32
SoNumeros = Keyascii
End Select
End Function
#End Region
Private Sub txtOutros_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOutros.KeyPress
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
KeyAscii = CShort(SoNumeros(KeyAscii))
If KeyAscii = 0 Then
e.Handled = True
End If
End Sub
Private Sub txtOutros_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtOutros.Leave
If txtOutros.Text = String.Empty Then
txtOutros.Text = 0
Else
txtOutros.Text = FormatCurrency(txtOutros.Text, 2, TriState.True, TriState.True,
TriState.True).Replace([Ô]R$[Ô], [Ô][Ô]).Trim
End If
End Sub
Desde já agradeço pela atenção.
Abraços.
O MaskedTextBox não seria útil?
Obrigado a todos pela ajuda, através da tabela ASCII foi liberado somente algumas teclas de comando, as teclas numéricas e a virgula.
If (Asc(e.KeyChar) > 20) And ((Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57)) And (Asc(e.KeyChar) <> 44) Then
e.Handled = True
End If
Mais uma vez obrigado a todos.
If (Asc(e.KeyChar) > 20) And ((Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57)) And (Asc(e.KeyChar) <> 44) Then
e.Handled = True
End If
Mais uma vez obrigado a todos.
Tópico encerrado , respostas não são mais permitidas