Usuário com melhor resposta
Qual evento devo usar ?

Pergunta
-
Bom dia
Estou com a seguinte duvida, tenho um textbox1 e preciso atualizar o valor de outro textbox2 só que isso deve acontecer de forma imediata ou seja de acordo com que vou digitando no textbox1 o valor textbox2 vai mudando. O textbox1 esta recebendo o desconto e o textbox2 é o valor apagar;
Bem já tentei alguns eventos como Leave, keyPress, Enter e outros mais nenhum deu o resultado descrito acima.
Alguém sabe outro?Ainda não conseguir solucionar o meu problema!!
Desde já agradeço.
- Editado Renato B Lima terça-feira, 9 de junho de 2015 15:11
Respostas
-
Boa tarde.
Por falta de retorno do usuário, esta thread será encerrada.
Caso haja necessidade, favor abrir uma nova.
Excelente tarde.
- Marcado como Resposta Cristopher C I_ sexta-feira, 19 de junho de 2015 17:35
Todas as Respostas
-
- Editado Bruno Maschio Joaquim segunda-feira, 8 de junho de 2015 12:39
- Sugerido como Resposta Lucio Rogerio SPBanned segunda-feira, 8 de junho de 2015 12:40
- Não Sugerido como Resposta Renato B Lima terça-feira, 9 de junho de 2015 15:10
-
-
Bruno Maschio Joaquim e Mr. GMSOFT
Quando eu uso o TextChanged e da um erro antes de abrir o formulário erro de conversão de caracteres o código que estou usando é este aqui:
private void txtValorDesconto_TextChanged(object sender, EventArgs e) { //double desconto = Convert.ToDouble(txtValorDesconto.Text); retiraMascara(txtvalor); double valor = Convert.ToDouble(txtvalor.Text); double resultado = valor - Convert.ToDouble(txtValorDesconto.Text); txtvalor.Text = resultado.ToString("C"); txtValorDesconto.Text = Convert.ToDouble(txtValorDesconto.Text).ToString("C"); }
Da o erro no txtValorDesconto.Text;
- Editado Renato B Lima segunda-feira, 8 de junho de 2015 12:59
-
Olá, o valor desse teu textBox não está chegando vazio na hora de realizar a conversão?
Para evitar problema de conversões, tente usar o método Double.TryParse, esse método ele verifica se é possível fazer a conversão do valor antes de realizar o mesmo.
Segue abaixo a modificação do seu código usando double.TryParse:
//double desconto = Convert.ToDouble(txtValorDesconto.Text); retiraMascara(txtvalor); double valor = 0d; double valorDesconto = 0d; double resultado = 0d; if (double.TryParse(txtvalor.Text, out valor) && double.TryParse(txtValorDesconto.Text, out valorDesconto)) { resultado = valor - valorDesconto; txtvalor.Text = resultado.ToString("C"); txtValorDesconto.Text = valorDesconto.ToString("C"); } else { //TODO: Tratar caso a conversão seja invalida. }
Abraço!
- Editado Bruno Maschio Joaquim segunda-feira, 8 de junho de 2015 13:09
- Marcado como Resposta Renato B Lima segunda-feira, 8 de junho de 2015 15:31
- Não Marcado como Resposta Renato B Lima terça-feira, 9 de junho de 2015 15:28
-
-
É verdade assim da certinho, não abusando a sua boa vontade mas tirando uma duvida quando eu limpo o txtValorDesconto o txtValor deve voltar para o valor que era antes ou seja o valor de origem dele isto eu ainda não consegui fazer, tentei desta forma :
retiraMascara(txtvalor); double valorTotal = 0d; double valorDesconto = 0d; double resultado = 0d; if (double.TryParse(txtvalor.Text, out valorTotal) && double.TryParse(txtValorDesconto.Text, out valorDesconto)) { if (valorDesconto > 0) { resultado = valorTotal - valorDesconto; txtvalor.Text = resultado.ToString("C"); txtValorDesconto.Text = valorDesconto.ToString("C"); } else { pegadados(); txtvalor.Text = valor; } } else { //TODO: Tratar caso a conversão seja invalida. }
-
-
Mas então desta forma não esta voltado sera que não devo usar o evento keyPress para volta para o valor antigo ?
- Editado Renato B Lima segunda-feira, 8 de junho de 2015 14:23
-
-
Então a variável global eu já tenho com o valor a questão é que não esta caindo no else, da uma olhada :
retiraMascara(txtvalor); double valorTotal = 0d; double valorDesconto = 0d; double resultado = 0d; if (double.TryParse(txtvalor.Text, out valorTotal) && double.TryParse(txtValorDesconto.Text, out valorDesconto)) { if (valorDesconto > 0) { resultado = valorTotal - valorDesconto; txtvalor.Text = resultado.ToString("C"); txtValorDesconto.Text = valorDesconto.ToString("C"); } else { MessageBox.Show("vazio"); pegadados(); txtvalor.Text = valor; } if (txtValorDesconto.Text ==""){ MessageBox.Show("vazio"); pegadados(); txtvalor.Text = valor; } } else { //TODO: Tratar caso a conversão seja invalida. }
-
-
Quando digito alguma coisa sim, mas quando eu limpo o text não entra nenhum if no caso era para entra no if do text vazio
Antes de abrir o formulário ele entra no else, depois não entra mais!
- Editado Renato B Lima segunda-feira, 8 de junho de 2015 15:07
-
Tu tem que fazer o teste abaixo antes do if.
if (txtValorDesconto.Text ==""){ MessageBox.Show("vazio"); pegadados(); txtvalor.Text = valor; }
Ele não entra no if por que o valor de algum textbox tá vindo vazio, fazendo com que ele não consiga converter para double.
Colocando o código acima antes do if deve funcionar.
Abraço!
-
Tem um problema neste método Double.TryParse não estou conseguindo colar centavos por R$ 2,30 já tentei troca por decimal mais continua do mesmo jeito, sera que você sabe o que pode ser ?
Abraços
-
Você pode usar a sobre-carga desse método que permite que você passe parâmetros do tipo NumberStyle, no qual você define propriedades do valor que será convertido, como moeda e casas decimais, para mais informações leia essa Thread.
Abraço!
-
Deixa eu explicar melhor o que esta acontecendo, por exemplo eu vou inserir o desconto de 2,20 no valor de 60,00 o resultado era para ser 57,80 certo!?
Mais não esta sendo ele da o resultado de 51,80 ou seja ele esta tirando 2 ate chegar na segunda casa depois da virgula se eu uso a tecla backspace para apagar o resultado ele vai inserindo 2 ate limpar ou seja vai ficando 49,80 etc .
Já testei em outro text para ver se era outro evento que estava influenciando mas não era.
-
Olá Renatobe, fiz uma pequena aplicação aqui e parece que funcionou, segue abaixo código.
private void txtDesconto_TextChanged(object sender, EventArgs e) { this.CalcularResultado(); } private void txtValor_TextChanged(object sender, EventArgs e) { this.CalcularResultado(); } private void CalcularResultado() { double valor; double desconto; double resultado; if(double.TryParse(this.txtValor.Text ,NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out valor) && double.TryParse(this.txtDesconto.Text ,NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out desconto)) { resultado = valor - desconto; this.label1.Text = resultado.ToString(); } else { this.label1.Text = "Alguma entrada inválida"; } }
Seria isso?
Abraço!
- Editado Bruno Maschio Joaquim segunda-feira, 8 de junho de 2015 20:10
-
Error 4 The name 'CultureInfo' does not exist in the current context D:\ACADEMIA_ORIGINAL\ACADEMIA\FormEscolhaServiço.cs 423 85
Uai que estranho o mesmo código seu a aqui da o seguinte erro !!!
- Editado Renato B Lima segunda-feira, 8 de junho de 2015 20:29
-
-
A biblioteca deu certo mas a conta ainda esta sendo feita de maneira erronia, não sei se tem algo haver acredito que não mas o valor eu estou pegando do banco e usando ele mesmo para pegar o resultado.
O que esta acontecendo que ele não pega o numero inteiro que eu digito por exemplo vou digita 2,80 antes de terminar de digitar ele já joga o 2 na subtração, se digitar 0,80 a conta é feita normalmente.
-
-
-
Boa tarde.
Por falta de retorno do usuário, esta thread será encerrada.
Caso haja necessidade, favor abrir uma nova.
Excelente tarde.
- Marcado como Resposta Cristopher C I_ sexta-feira, 19 de junho de 2015 17:35