• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Joca

[Resolvido] Duas TextBox a exibir cálculos em simultâneo

7 mensagens neste tópico

Boas!

Estou com um problema mesmo ridículo (pois, acho que é simples de resolver...) porém, após vários testes ainda não percebi como dizer ao programa para aceitar o que eu pretendo fazer... Culpa minha, e do cansaço, obviamente...  :wallbash:

Neste momento, retornei a fazer do início.

A ideia é que, se digitar um valor na textbox1 ele multiplique o valor. Mas, se eu digitar o valor na textbox2 ele deverá dividir o valor.

E, sim é só para usar as duas textbox.

O objectivo é que se o valor for digitado na textbox1, o resultado apareça na textbox2. E, vice-versa.

Public Class Form1

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles TextBox1.TextChanged, TextBox2.TextChanged


        If TextBox1.Text <> "" Then

            TextBox2.Text = 10 * Val(TextBox1.Text) '10*5 = 50

        ElseIf TextBox2.Text <> "" Then

            TextBox1.Text = 10 / Val(TextBox2.Text) '10/5 = 2

        End If

    End Sub

End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que o problema ta no ElseIf, se colocares dois Ifs diferentes, talvez resolva o problema. Isto sem saber ao certo o que queres fazer...

Mas talvez te aconselhe a teres dois eventos distintos para o TextChanged de cada TextBox e fazeres o teu código de acordo à TextBox.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que o problema ta no ElseIf, se colocares dois Ifs diferentes, talvez resolva o problema. Isto sem saber ao certo o que queres fazer...

Ok Nazgulled. Segui a tua sugestão. Agora estou a usar dois Ifs diferentes (por enquanto).

O que eu quero é que:

-> quando escrever um valor na textbox1, me retorne o resultado (neste caso, pela multiplicação) na textbox2. E, se já estiver a exibir algum valor na textbox2 que, tivesse sido anteriormente calculado, o apague e, exiba o valor do novo resultado ;

-> quando escrever um valor na textbox2, me retorne o resultado (neste caso, pela divisão) na textbox1. E, se já estiver a exibir algum valor na textbox1 que, tivesse sido anteriormente calculado, o apague e, exiba o valor do novo resultado.

Neste momento, estou, de novo, no mesmo ponto em que tinha terminado ontem (antes de "reiniciar" as minhas ideias e, colocar o código acima pelo qual iniciei o meu raciocínio).

Eu estou a pensar em duas alternativas (fiz de maneira diferente em cada um dos eventos das textboxes, em baixo, para perceberem a que alternativas é que me refiro).

Obviamente que, as duas alternativas não funcionam em simultâneo. Cada uma das alternativas deve ser testada separadamente para ver correctamente o resultado final.

Porém, não tenho conseguido "forçar" a actualização para exibir os novos resultados das contas (uma vez que, estou a introduzir um novo valor em cada uma das textboxes e, não actualiza a outra textbox para exibir o resultado correcto).

Este é o meu problema!! A actualização dos resultados calculados (após ter introduzido novos valores numa ou noutra das textbox)

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        

        If Not TextBox1.Text <> "" And Not TextBox2.Text = "" Then

            TextBox2.Text = String.Empty

        Else

            TextBox2.Text = Val(10) * Val(TextBox1.Text) '10*5 = 50

        End If

    End Sub


    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

        If TextBox1.Text = "" And TextBox2.Text <> "" Then


            TextBox1.Text = Val(10) / Val(TextBox2.Text) '10/5 = 2

            'TextBox1.Refresh()
            'TextBox1.Update()

        End If

    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este código parece-me um bocado confuso, ou não percebi bem o que tu queres. Mas vê se é isto que procuras:

   Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged



        If TextBox1.Text = String.Empty Then

            TextBox2.Text = String.Empty

        Else

            TextBox2.Text = Val(10) * Val(TextBox1.Text) '10*5 = 50

        End If

    End Sub


    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

        If TextBox2.Text = String.Empty Then

            TextBox1.Text = String.Empty

        Else

            TextBox1.Text = Val(10) / Val(TextBox2.Text) '10/5 = 2

        End If

    End Sub

Atenção que não testei o código, e posso não ter percebido muito bem a tua ideia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Anolsi, também pensei nisso.

O problema é que, se escreveres o valor 5 na textbox1 ele retorna uma boa resposta...uma vez que, o programa vai fazer as contas de um lado e do outro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então talvez isto resolva o teu problema.

  Private _altera as Boolean = true
  Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged


        If Not(_altera) Then Exit Sub
        If TextBox1.Text = String.Empty Then

            TextBox2.Text = String.Empty

        Else
            _altera = false
            TextBox2.Text = Val(10) * Val(TextBox1.Text) '10*5 = 50
             _altera = true
        End If

    End Sub


    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

        If Not(_altera) Then Exit Sub
        If TextBox2.Text = String.Empty Then

            TextBox1.Text = String.Empty

        Else
            _altera = false
            TextBox1.Text = Val(10) / Val(TextBox2.Text) '10/5 = 2
            _altera = true
        End If

    End Sub

Outra opção seria só calculares quando a textbox perdesse o focus

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Era isso mesmo!

Muito obrigado!  :)

Agora é que me lembrei que, também podia usar a propriedade tag para obter esse efeito!

0

Partilhar esta mensagem


Link 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