Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá tenho esse código que encontrei na internet para formatar um textbox como moeda enquanto digito no mesmo.
Public Class utils
''' <summary>
''' Método que formata para moeda o conteúdo de um TextBox
''' </summary>
''' <param name="txt">Controle a ser formatado</param>
''' <remarks></remarks>
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")
txt.Text = ""
End Try
End SubPorém o código formata com 2 casas decimais, eu necessito que a formatação seja com 3 casas decimais.
Alguém tem ideia do que posso mudar no código?
>
1 hora atrás, Gabriel Heming disse:
O que o seu código faz é pegar qualquer número, dividor por 100 (o que significa que o número 200 se tornará 2) e adiciona duas casas decimais.
O que você precisa fazer é pegar o mesmo número 200 e transformá-lo em 0.2. Na hora de formatar, adicione uma terceira casa.
Pode ser feito aumentando o valor de divisão para 1000 e utilizando o formato "{0:N3}".
consegui com esse médotp