none
Me ejecuta la funcion 3 veces y da resultado erroneo RRS feed

  • Pregunta

  • Buenas al cambiar en el combobox me llama la funcion 3 veces y me da un resultado erroneo

    1000 gracias

     Private Sub TBOG_TextChanged(sender As Object, e As EventArgs) Handles TBOG.TextChanged
    
            Call hidrometro()
    
        End Sub
    
    
    
        Private Sub TBFG_TextChanged(sender As Object, e As EventArgs) Handles TBFG.TextChanged
            Call hidrometro()
        End Sub
        Private Sub CBHidrometro_SelectedValueChanged(sender As Object, e As EventArgs) Handles CBHidrometro.SelectedValueChanged
            Try
               If CBHidrometro.SelectedIndex = 0 Then
                    Label78.Text = "Brix"
                    Label86.Text = "Brix"
                    Call hidrometro()
                End If
                If CBHidrometro.SelectedIndex = 1 Then
                    Label78.Text = "SG"
                    Label86.Text = "SG"
                    Call hidrometro()
                End If
            Catch ex As Exception
                MsgBox(ex.ToString())
            End Try
        End Sub
        Sub hidrometro()
            If CBHidrometro.SelectedIndex = 0 Then
                Label78.Text = "Brix"
                Label86.Text = "Brix"
                If Label78.Text = "Brix" Then
                    If TBOG.Text = "" Or TBFG.Text = "" Then
                    Else
                       
                        Dim SGO As Decimal = TBOG.Text
                        Dim SGF As Decimal = TBFG.Text
                        LBOG.Text = FormatNumber(-616.868 + (1111.14 * SGO) - (630.272 * SGO ^ 2) + (135.997 * SGO ^ 3), 2)
                        LBFG.Text = FormatNumber(-616.868 + (1111.14 * SGF) - (630.272 * SGF ^ 2) + (135.997 * SGF ^ 3), 2)
                        Dim abv As Decimal = FormatNumber((76.08 * (SGO - SGF) / (1.775 - SGO)) * (SGF / 0.794), 2)
                        LBAVB.Text = abv & " %"
                    End If
    
                End If
            End If
            If CBHidrometro.SelectedIndex = 1 Then
                Label78.Text = "SG"
                Label86.Text = "SG"
                If Label78.Text = "SG" Then
                    If TBOG.Text = "" Or TBFG.Text = "" Then
                    Else
                        
                        Dim SGO As Decimal = TBOG.Text
                        Dim SGF As Decimal = TBOG.Text
                        Dim SgtoBr As Decimal = FormatNumber(-616.868 + (1111.14 * SGO) - (630.272 * SGO ^ 2) + (135.997 * SGO ^ 3), 2)
                        Dim SftoBr As Decimal = FormatNumber(-616.868 + (1111.14 * SGF) - (630.272 * SGF ^ 2) + (135.997 * SGF ^ 3), 2)
                        MsgBox(SgtoBr)
                        TBOG.Text = SgtoBr
                        TBOG.Text = SftoBr
                        '
                    End If
    
                End If
                End If
        End Sub

    jueves, 29 de diciembre de 2016 9:38

Respuestas

  • Hola:

    Ten en cuenta que en tu función Hidrometro(), tienes lo siguiente:

                      MsgBox(SgtoBr)
                        TBOG.Text = SgtoBr
                        TBOG.Text = SftoBr

    Cada vez que ejecutas Hidrometro (desde el combo o desde el textchanged), se ejecutan estás instrucciones, y como tienes también activado el evento TBOG.TextChanged, pues se vuelve a ejecutar hidrometro() dos veces más.

    Revisa esas instrucciones y decide que hacer: lo habitual es 'quitar' el evento TextChanged(), y su código asociado. En vez de llamar a Hidrometro en el TextChanged, creas un botón de 'calcular', y lo pones allí.

    Espero que te sirva

    Saludos


    • Editado LG DES jueves, 29 de diciembre de 2016 15:21
    • Marcado como respuesta JETET jueves, 29 de diciembre de 2016 16:31
    jueves, 29 de diciembre de 2016 15:20

Todas las respuestas

  • Hola:

    Ten en cuenta que en tu función Hidrometro(), tienes lo siguiente:

                      MsgBox(SgtoBr)
                        TBOG.Text = SgtoBr
                        TBOG.Text = SftoBr

    Cada vez que ejecutas Hidrometro (desde el combo o desde el textchanged), se ejecutan estás instrucciones, y como tienes también activado el evento TBOG.TextChanged, pues se vuelve a ejecutar hidrometro() dos veces más.

    Revisa esas instrucciones y decide que hacer: lo habitual es 'quitar' el evento TextChanged(), y su código asociado. En vez de llamar a Hidrometro en el TextChanged, creas un botón de 'calcular', y lo pones allí.

    Espero que te sirva

    Saludos


    • Editado LG DES jueves, 29 de diciembre de 2016 15:21
    • Marcado como respuesta JETET jueves, 29 de diciembre de 2016 16:31
    jueves, 29 de diciembre de 2016 15:20
  • Gracias LG DES por contestar

    pero quiero que lo haga cuando termine de escribir en el textbox

    ya esta corregido ese error 

    pero sigue igual

    1000 gracias

    jueves, 29 de diciembre de 2016 15:27