Ir para o conteúdo
williamjda

Somar textbox com Mascara no formato em R$

Mensagens Recomendadas

williamjda

Amigos tenho uma duvida. Tenho a seguinte mascas para converter em reais que funciona corretamente o problema esta quando vou somar os valores das textbox. Ele somo apenas os valores da esquerda antes do ponto o restante não então quando vou somar 1.100,00 + 10,00 o resultado que aparece é 11,1 por que ele so pega o valor que esta antes do ponto. Alugem poderia me ajudar.

OBS: A mascara funciona corretamente o problema é somar os valores.

Segue codigo da mascara:

Public Class EntradaCompraVendas
'Classe publica para tranformar o campo no formato moeda.
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")
		End Try
	End Sub
End Class

Private Sub EntradaCompraVendasBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EntradaCompraVendasBindingNavigatorSaveItem.Click
	Me.Validate()
	Me.EntradaCompraVendasBindingSource.EndEdit()
	Me.TableAdapterManager.UpdateAll(Me.BD_dadosDataSet)
End Sub
Private Sub EntradaCompraVendas_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
	'TODO: This line of code loads data into the 'BD_dadosDataSet.EntradaCompraVendas' table. You can move, or remove it, as needed.
	Me.EntradaCompraVendasTableAdapter.Fill(Me.BD_dadosDataSet.EntradaCompraVendas)
End Sub
Private Sub CompraTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CompraTextBox.TextChanged
	'Chama a classe publica da mascara moeda.
	Utils.TextBoxMoeda(CompraTextBox)
End Sub
Private Sub VendasTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VendasTextBox.TextChanged
	'Chama a classe publica da mascara moeda.
	Utils.TextBoxMoeda(VendasTextBox)
End Sub
Private Sub TotalTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TotalTextBox.TextChanged
	'Chama a classe publica da mascara moeda.
	'Utils.TextBoxMoeda(TotalTextBox)
End Sub
Private Sub BT_gravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_gravar.Click
	'Se o botão gravar for pressionado ele faz com que seja somado os valores do campo dizimo e Venda
	If BT_gravar.TabIndex Then
		TotalTextBox.Text = Val(CompraTextBox.Text) + Val(VendasTextBox.Text)
				End If
	Me.Validate()
	Me.EntradaCompraVendasBindingSource.EndEdit()
	Me.TableAdapterManager.UpdateAll(Me.BD_dadosDataSet)
End Sub
 End Class

Editado por williamjda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pt_V1p3r

Bem apenas li na diagonal o teu codigo e algo me saltou logo à vista, se estas a trabalhar com moedas nao uses o double, usa sim decimal.

Depois já te tento ajudar mais...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
williamjda

Amigo desculpa a demora pois não estava a trabalhar por esses dias. Vou verificar e respondo. Obrigado.

Editado por williamjda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

Eu tenho um troque que ás vezes resulta, é pegar no valor da textbox e multiplicalo por 1, o que obriga a tranformar o valor em numeros

TotalTextBox.Text = (CompraTextBox.Text*1) + (VendasTextBox.Text*1)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.