Usuário com melhor resposta
formatação moeda

Pergunta
-
código está dando erro:
private void textBoxVLR_TextChanged(object sender, EventArgs e) { textBoxVLR.Text=Convert.ToDouble(textBoxVLR.Text).ToString("C"); }
erro:
An exception of type 'System.FormatException' occurred in mscorlib.dll but was not handled in user code
Additional information: A cadeia de caracteres de entrada não estava em um formato incorreto.fiz de outro jeito e o mesmo erro continua
estou usando visual studio 2015
se alguem puder me ajudar
valdeir28
Respostas
-
Olá vps28, o problema aí é que caracteres não numéricos não podem ser convertidos para o formato de moeda.
A primeira conversão é feita com sucesso, já na segunda vez, os caracteres da moeda estão presentes.
Você pode utilizar o método Substring para pular os caracteres da moeda e converter somente os números.
string numericValue = textBoxVLR.Substring(2); //R$ textBoxVLR.Text = double.Parse(numericValue).ToString("C");
- Marcado como Resposta Marcos SJ segunda-feira, 21 de setembro de 2015 13:32
- Editado Guilherme L. Santos segunda-feira, 21 de setembro de 2015 21:46
-
Olá vps28, você pode utilizar a sobrecarga do método Parse da classe Double que permite a passagem de um provedor (System.Globalization.NumberStyles). Assim, o número será convertido com sucesso mesmo com os caracteres da moeda presentes na string.
double valor = double.Parse("$60.00", System.Globalization.NumberStyles.Currency);
- Marcado como Resposta Marcos SJ quarta-feira, 21 de outubro de 2015 17:42
Todas as Respostas
-
Boa noite!
tenta assim:
mas um detalhe não use o evento Change para isso use o evento Leave assim só será formatado no momento em que sair do objeto, acho que do jeito que você faz até daria certo com o evento Leave.
Mas tenta assim:
textBoxVLR.Text = String.Format("{0:C}", Convert.ToDouble(textBoxVLR.Text.Replace("R$ ", "")));
Visite meu canal no youtube tem muita coisa legal lá, to começando mais to postando uns dois videos por semana sobre C# Windows Form:
Meu canal: https://www.youtube.com/channel/UCbIAUS0RNnCzU2B5SGFDJgg
-
Olá vps28, o problema aí é que caracteres não numéricos não podem ser convertidos para o formato de moeda.
A primeira conversão é feita com sucesso, já na segunda vez, os caracteres da moeda estão presentes.
Você pode utilizar o método Substring para pular os caracteres da moeda e converter somente os números.
string numericValue = textBoxVLR.Substring(2); //R$ textBoxVLR.Text = double.Parse(numericValue).ToString("C");
- Marcado como Resposta Marcos SJ segunda-feira, 21 de setembro de 2015 13:32
- Editado Guilherme L. Santos segunda-feira, 21 de setembro de 2015 21:46
-
-
-
Olá vps28, você pode utilizar a sobrecarga do método Parse da classe Double que permite a passagem de um provedor (System.Globalization.NumberStyles). Assim, o número será convertido com sucesso mesmo com os caracteres da moeda presentes na string.
double valor = double.Parse("$60.00", System.Globalization.NumberStyles.Currency);
- Marcado como Resposta Marcos SJ quarta-feira, 21 de outubro de 2015 17:42