-
Total de itens
4 -
Registro em
-
Última visita
Sobre Gustavo Almeida
Gustavo Almeida's Achievements
0
Reputação
-
Pegar só um numero da Text Box
pergunta respondeu ao Gustavo Almeida de Gustavo Almeida em Visual Basic
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? -
Backspace só deleta o numero temporariamente(ele reaparece caso outro
pergunta respondeu ao Gustavo Almeida de Gustavo Almeida em Visual Basic
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- 1 resposta
-
- backspace
- Nao Deleta
- (e %d mais)
-
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/
-
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
- 1 resposta
-
- backspace
- Nao Deleta
- (e %d mais)