none
formatação moeda RRS feed

  • 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

    domingo, 20 de setembro de 2015 21:27

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
    segunda-feira, 21 de setembro de 2015 02:13
  • 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
    terça-feira, 22 de setembro de 2015 19:20

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

    domingo, 20 de setembro de 2015 21:59
  • 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
    segunda-feira, 21 de setembro de 2015 02:13
  • desculpem a demora na resposta mas continuou dando o mesmo erro guilherme

    valdeir28

    terça-feira, 22 de setembro de 2015 12:11
  • funcionou só no evento Changne, tentei no Leave e no LostFocus não funcionou

    valdeir28

    terça-feira, 22 de setembro de 2015 12:13
  • 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
    terça-feira, 22 de setembro de 2015 19:20