Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alexandremanowar

Erro no calculo

Recommended Posts

Olá pessoal

 

Estou estudando vb.net com winform e estou tentando fazer o seguinte, tenho um texbox1 e um textbox2 e label1. Eu quero digitar um valor no textbox1 e no textbox2 e somar os dois valores para que o resulatdo saia no label1 isso tudo no mesmo form e sem precisar usar botão algum ou seja apenas digito e o valor aparece no label1 automaticamente. Fiz alguns modos mas não está dando certo. Olha como fiz:

 

Dim teste As New Nota        Dim calc1, calc2, final        calc1 = Val(teste.txtquantidade1.Text)        calc2 = Val(teste.txtunitario1.Text)        final = calc1 * calc2        lbltotal1.Text = final

Tentei também assim:

       Dim calc1, calc2, final        calc1 = Val(txtquantidade1.Text)        calc2 = Val(txtunitario1.Text)        final = calc1 * calc2        lbltotal1.Text = final

Já tentei esses dois tipos aí mas não funcionou. Primeiro coloquei o código direto no método do form aí não deu certo. Depois coloquei no método da label mas também não funcionou. Quero fazer isso de modo dinâmico ou seja digito no textbox1 e no textbox2 e resultado aparece na label1.

Isso com winform

 

Alguém sabe como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

declara como Decimal (acho q é esse no VB.NET) as variáveis e faça a conversão de string para Decimal... e depois faça a soma!!Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

E a cara beleza. Aquele problema com os texbox do outro post eu resolvi, já quero te agradecer pela força.Mas voltando a esse é o seguinte. Declarei dessa forma como decimal até aí beleza mas o problema é que eu digito os valores nos TextBox1 e TextBox2 mas o resultado não aparece da label1. Porém quando eu cliquei em cima da Label1 funcionou eu quero que digitando o resulatdo já apareça sem eu precisar clicar na label1.É possível?

Compartilhar este post


Link para o post
Compartilhar em outros sites

em qual evento você está colocando esse calculo?Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro da label1

dessa forma:

Private Sub label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles label1.Click        If txtunitario1.Text.Length > 0 Then            Dim calc1 As Decimal            Dim calc2 As Decimal            Dim final As Decimal            calc1 = Val(txtunitario1.Text)            calc2 = Val(txtquantidade1.Text)            final = calc2 * calc1            label1.Text = final        End If    End Sub

Mas aí eu resolvi assim:

Private Sub lbltotal1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtunitario1.TextChanged        If txtunitario1.Text.Length > 0 Then

Aterei o Handles

funionou legal

 

Valeu

at+

Compartilhar este post


Link para o post
Compartilhar em outros sites

é, eu ia falar pra você colocar qdo o textbox perde o foco... mas se resolveu assim.. beleza..Att,carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara deu um problema aqui que nã oestou conseguindo arrumar, é o seguinte fiz a primeira parte do calculo como colquei acima, mas eu tenho três calculos desse tipo ou seja duas textbox sendo somadas e um label recebendo o resultado até beleza fiz todas iguais aí eu tenho uma quarta label que eu quero que fique o resultado da soma das outras três labels mas nã oestou conseguindo fazer direto. O modo que você me sugeriu de quando perder o foco do cursor não funciona porque é a soma de labels, deixei o método click no evento da label fiz a soma das labels aí quando eu clico na label ela exibe o resultado mas eu quero que ela exiba direto sem precisar clicar.

 

Olha como eu fiz:

Private Sub lbltotalproduto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbltotalproduto.Click        Dim calc1 As Decimal        Dim calc2 As Decimal        Dim final As Decimal        calc1 = Val(lbltotal1.Text)        calc2 = Val(lbltotal2.Text)        final = calc1 + calc2        lbltotalproduto.Text = final    End Sub

funciona mas eu tenho que clicar na label para exibir o resultado como eu faço para exibir direto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu falei pra você colocar qdo perder o Foco no TextBox e não no Label... ai ele faz o calculo automatico...não entendi direito a sua situação!!! Tem como explicar direito!!Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então a situação agora é diferente da outra na outra os valores a serem calculados estão nos textbox aí beleza eu digito o valor nos Textbox e o resultado aparece no label até aí ok mas agora é o seguinte esse valor que aperece no label quero calcular ele e exibir em outro label tipo digito o valor no textbox1 e no textbox2 o resultado automaticamente aparece no label1. Depois digito um valor no textbox3 e textbox4 e o valor aparecel no label2. Até aqui funciona legal porém agora eu quero pegar o valor que aparece no label1 e no label2 e somar para aparecer no label3 automaticamente mas as labels não tem foco de cursor por isso não está funcionando. Como eu faço para exibir na label3 o valor da soma da label1 com a label2?Eu deixei o método como clique aí se eu clicar o resultado aparece, mas eu não quero ficar clicando quero que apareça automáticamente.como eu faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

float valor = Convert.ToInt64(this.Lbl1.Text) + Convert.ToInt64(this.Lbl2.Text);Lbl3.Text = valor.ToString();isso??Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara converti para vb.net o valor da soma só aprece se eu clicar na label.

Olha como ficou:

Private Sub lbltotalproduto_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbltotalproduto.Click        Dim valor As Single = (Convert.ToInt64(Me.lbltotal1.Text) + Convert.ToInt64(Me.lbltotal2.Text))        lbltotalproduto.Text = valor.ToString    End Sub
Será que algum comando nessa linha resolveria:

Private Sub lbltotalproduto_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbltotalproduto.Click

Ela está com o Hendles como lbltotalproduto.Click por isso o resultado só aprece quando eu clico já tentei vários modos nessa linha mas não resolveu

Eu preciso que o resultado apareça sózinho

 

Sabe onde está o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe um evento que é disparado qdo o Text é modificado, é o TextChanged... você pode fazer assim, qdo modificar algum dos 2 labels dispara o Textchanged deles e faz o calculo novamente... entendeu?Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já fiz isso mas o problema é que na verdade tenho 5 labels e nem sempre as 5 vão ser prenchidas ou alteradas e se eu usar esse esquema tenho que dixar na última label mas pode ser calculado apenas 3 aí a última não muda e o valor não é disparado.Ficou complicado por isso.Já tentei esse método mas precisa que tudo seja preeenchido.Tem alguma outra idéia?Eu já nã osei mais onde mexer

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas foi o q eu falei, você terá q colocar o evento TextChanged em TODOS os Labels... e ele chama o método q executa o calculo... é bem simples...entendeu?Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.