Galera estou fazendo um programa para controle de gastos, e ele esta seguindo uma rotina estranha e que eu não consigo resolver.
O Problema é o seguinte: Existe uma TextBox na qual o usuário insere o valor do gasto/recebimento, está tudo funcionando direitinho
até o momento em que o usuário deleta um numero dessa TextBox. Ao deletar, na tela do usuário o numero desaparece, mas quando ele
insere um novo numero, o numero que foi deletado reaparece...
Acredito que o problema esteja no modo que utilizei para colocar a ","(virgula) na segunda casa do numero, se souberem outro jeito de colocar a virgula
ou então uma forma para fazer o backspace deletar de verdade por favor me ajude.
Código Relacionado ao Problema:
Variáveis Pré Declaradas:
Dim LimparTextBoxValor As Boolean = True
Dim LimparTextBoxDescrição As Boolean = True
Dim LimparTextBoxDetalhes As Boolean = True
Dim valorAtual As Double = 0
Dim ValorDepoisDoBackspace As Double = 0
Dim CursorNoFimDaLinhaAposPrimeiroClick As Boolean = True
Private Sub TrataCaractereRecebido(sender As Object, ByVal UltimaTeclaApertada As System.Windows.Forms.KeyPressEventArgs) Handles ValorTextBox.KeyPress
Dim caractereApertado As Char = UltimaTeclaApertada.KeyChar
If (Char.IsDigit(caractereApertado)) Then
AtualizarValor(caractereApertado)
UltimaTeclaApertada.Handled = True
ElseIf Char.IsControl(caractereApertado) Then
Else
MsgBox("Digite Apenas Numeros Por Favor")
UltimaTeclaApertada.Handled = True
End If
ColocaCursorNaUltimaPosicao(ValorTextBox)
End Sub
Private Sub AtualizarValor(caractereDoDigito As Char)
Dim valorDoDigito As Double = Convert.ToDouble(caractereDoDigito.ToString)
valorAtual = valorAtual * 10 + valorDoDigito
MostraNumeroNaTextBoxEmReais(valorAtual) 'chamada da função passando o parametro valorAtual
End Sub
Private Sub MostraNumeroNaTextBoxEmReais(numero As Double) ' declaração da função
ValorTextBox.Clear()
ValorTextBox.Text = " R$ " + ColocaDuasCasasDecimais(numero.ToString)
End Sub
Private Function ColocaDuasCasasDecimais(numeroEscrito As String)
Dim numeroEscritoComDuasCasasDecimais As String = ""
If numeroEscrito.Length = 1 Then
numeroEscrito = "00" + numeroEscrito
ElseIf numeroEscrito.Length = 2 Then
numeroEscrito = "0" + numeroEscrito
End If
Dim parteDecimal As String = numeroEscrito.Substring(numeroEscrito.Length - 2, 2)
Dim ParteDasCentenas As String = numeroEscrito.Substring(0, numeroEscrito.Length - 2)
numeroEscritoComDuasCasasDecimais = ParteDasCentenas + "," + parteDecimal
Return numeroEscritoComDuasCasasDecimais
End Function