Gustavo Almeida

Membros
  • Content Count

    4
  • Joined

  • Last visited

Community Reputation

0 Neutro

1 Follower

About Gustavo Almeida

  1. Então pessoal, finalmente consegui resolver parcialmente meu problema, como a variável a qual estou atribuindo o valor da textbox é uma integer, só foi necessario dividir por 10 para remover a ultima casa decimal ahahahahhah simples assim. Porem isso me deixou com um outro problema já que toda vez que deleto um numero maior que 5 ao invés de arredondar pro numero anterior ele arredonda pra cima. Ex: Primeiro Caso Numero = 12,34 (aperto backspace) Numero = 1,23 (E funcionou perfeitamente, era isso que eu queria) Segundo Caso Numero = 1234,56 (aperto backspace) Numero = 123,46 ( ele substituiu o 56 por 6) Aqui esta o meu problema, como forçar ele a sempre arredondar pra baixo?
  2. Ninguém respondeu mas eu encontrei um método aqui, porém ainda precisa ser aperfeiçoado pois não esta funcionando plenamente(vou anexa-lo no fim) Fiz o seguinte: Peguei o valor que estava na minha TextBox e dividi por 10, como a variável é Integer ele só removeu a parte da virgula sendo assim funciona perfeitamente para números terminados de 0 a 4, porém quando o numero é terminado em 5+ ele é arredondado para cima ou seja 00.15 passa para 00.20 apos o backspace, ao invés de ficar 00,01. Alguém conhece alguma maneira de arredondar sempre para baixo? If (Char.IsDigit(caractereApertado)) Then AtualizarValor(caractereApertado) UltimaTeclaApertada.Handled = True ElseIf Char.IsControl(caractereApertado) Then RemoveUmaCasaDecimal(caractereApertado) UltimaTeclaApertada.Handled = True Else MsgBox("Digite Apenas Numeros Por Favor") UltimaTeclaApertada.Handled = True End If ColocaCursorNaUltimaPosicao(ValorTextBox) End Sub Private Sub RemoveUmaCasaDecimal(UltimoCaractereApertado As Char) If UltimoCaractereApertado = Chr(8) Then valorAtual = valorAtual / 10 MostraNumeroNaTextBoxEmReais(valorAtual) End If 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
  3. Digamos que eu tenha uma TextBox com o valor 12345,67 Eu preciso remover o ultimo numero de modo que fique na TextBox apenas 1234,56 Como faço isso? PS: Já fiz um outro tópico relacionado ao mesmo problema mas com outra duvida, e nele está o meu código se alguém quiser visualizar a outra duvida o link é esse: https://www.scriptbrasil.com.br/forum/topic/179649-backspace-so-deleta-o-numero-temporariamenteele-reaparece-caso-outro-numero-seja-inserido/
  4. 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