none
Formatando número enquanto digita RRS feed

  • Pergunta

  • Senhores

    Estou utilizando a função abaixo para formatar números enquanto digito.

    Um problema ocorre quando carrego um registro, caso o número contenha apenas uma casa decimal ao retornar o valor da função, o número é apresentado com um dígito a menos. Exemplo: 8.571,5 é transformado em 857,15 quando o correto seria 8.571,50

    Isto só ocorre quando se mostra o valor do campo do registro, para novos valores funciona perfeitamente.

    A função foi extraída da página: https://sites.google.com/site/programacaoonline/Family-blog/vb-net/textbox-com-mascara-moeda-em-vb-net

        Public Shared Sub TextBoxMoeda(ByRef txt As TextBox)
    
            Dim n As String = String.Empty
            Dim v As Double = 0
    
            Try
                n = txt.Text.Replace(",", "").Replace(".", "")
                If n.Equals("") Then n = "000"
                n = n.PadLeft(3, "0")
    
                If n.Length > 3 And n.Substring(0, 1) = "0" Then n = n.Substring(1, n.Length - 1)
    
                v = Convert.ToDouble(n) / 100
                txt.Text = String.Format("{0:N}", v)
                txt.SelectionStart = txt.Text.Length
    
            Catch ex As Exception
                MessageBox.Show(ex.Message, "TextBoxMoeda")
            End Try
    
        End Sub


    [b]Sergio Ivanenko[/b]

    quarta-feira, 28 de outubro de 2015 17:18

Respostas

  • Olá Ivanenko,

    Tudo bem?

    Por gentileza, verifique as informações deste artigo, acredito que talvez consiga resolver com a ajuda destas informações:

    Link: VB .NET - Formatando números com ToString

    pode usar a máscara string para formatação numérica:
    
    strValor = valor.ToString("R$ #,###.00")
    
    Ambas as declarações irão formatar o valor para R$ 9.959,95. (pois minha localização é Brazil)
    
    
    Espero ter ajudado.


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Ivanenko sexta-feira, 30 de outubro de 2015 16:01
    quinta-feira, 29 de outubro de 2015 12:36
  • Marcos

    Como quero que quando o usuário estiver digitando o valor, este já vai sendo formatado, utilizei as seguintes instruções:

            Dim csA As New csAcordo
            Dim dt As New DataTable
            Dim Valor As Single
            Dim strValor As String
    
            dt = csA.mostraAcordo(My.Settings.conexaoBD, idAcordoF)
    
            Valor = dt.Rows(0)("valorDaParcela")
            strValor = Valor.ToString("###,###.00")
            Me.txt_ValorDaParcela.Text = Valor


    [b]Sergio Ivanenko[/b]

    • Marcado como Resposta Marcos SJ sexta-feira, 30 de outubro de 2015 16:57
    sexta-feira, 30 de outubro de 2015 16:04

Todas as Respostas

  • Olá Ivanenko,

    Tudo bem?

    Por gentileza, verifique as informações deste artigo, acredito que talvez consiga resolver com a ajuda destas informações:

    Link: VB .NET - Formatando números com ToString

    pode usar a máscara string para formatação numérica:
    
    strValor = valor.ToString("R$ #,###.00")
    
    Ambas as declarações irão formatar o valor para R$ 9.959,95. (pois minha localização é Brazil)
    
    
    Espero ter ajudado.


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Ivanenko sexta-feira, 30 de outubro de 2015 16:01
    quinta-feira, 29 de outubro de 2015 12:36
  • Função Format (Visual Basic for Aplications)

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 29 de outubro de 2015 12:39
  • Marcos

    Como quero que quando o usuário estiver digitando o valor, este já vai sendo formatado, utilizei as seguintes instruções:

            Dim csA As New csAcordo
            Dim dt As New DataTable
            Dim Valor As Single
            Dim strValor As String
    
            dt = csA.mostraAcordo(My.Settings.conexaoBD, idAcordoF)
    
            Valor = dt.Rows(0)("valorDaParcela")
            strValor = Valor.ToString("###,###.00")
            Me.txt_ValorDaParcela.Text = Valor


    [b]Sergio Ivanenko[/b]

    • Marcado como Resposta Marcos SJ sexta-feira, 30 de outubro de 2015 16:57
    sexta-feira, 30 de outubro de 2015 16:04