Usuário com melhor resposta
Formatando número enquanto digita

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]
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
-
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
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
-
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.
-
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